【GAS入門】メールの件数を簡単にカウントする方法

メールの件数を数えるのって、どうやってやるんだろう…GASで簡単にできるって聞いたことあるけど…
猫男
猫男
catman
catman
よし、catmanが「GASでメールの件数をカウント」する方法を伝授しよう!

GASでメールの件数をカウントする方法

早速、メール件数をカウントするGASのスクリプトを書いてみよう。


function countEmails() {
  var threads = GmailApp.getInboxThreads();
  Logger.log("受信トレイのメール件数: " + threads.length);
}

まずGmailApp.getInboxThreads()メソッドで受信トレイのスレッドを配列で取得する。

※ 最大 500 件のスレッドまで

 

スレッドとは、

Gmail内でやり取りされた関連メールのまとまりのこと

だ。初回メール送信 から、それに対する返信までが1スレッドとしてカウントされるぞ。

このスレッドをthreadsとして扱い、その長さを取得することでメールの件数をカウントできるんだ。

受信トレイ以外のメールもカウント

特定のラベルやカテゴリもカウントしたいなら、ラベルを指定する方法がある。


function countLabeledEmails() {
  var label = GmailApp.getUserLabelByName("重要");
  if (label) {
    var threads = label.getThreads();
    Logger.log("「重要」ラベルのメール件数: " + threads.length);
  }
}

GmailApp.getUserLabelByName()メソッドで「重要」というラベルを取得。それを使ってスレッドを数えている。

ラベルに指定したスレッドの件数を取得するために、getThreads()メソッドを活用する。

日時を指定したメール件数のカウント

特定の日付以降のメール件数を知りたい場合、クエリを活用しよう。


function searchLast7DaysEmails() {
  const today = new Date();
  
  // 7日前の日付を計算
  const oneWeekAgo = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
  
  // 日付を YYYY/MM/DD 形式に変換(Gmail検索クエリ用)
  const formatted = Utilities.formatDate(oneWeekAgo, Session.getScriptTimeZone(), "yyyy/MM/dd");
  
  // 検索クエリ作成
  const query = `after:${formatted}`;
  
  // 検索実行
  const threads = GmailApp.search(query);

  Logger.log(`過去1週間のスレッド数: ${threads.length}`);
}

GmailApp.search()メソッドを用いて、特定のクエリを使ってスレッドを検索する。

ここでは、過去1週間のメール件数を取得しているな。

クエリの条件を変更することでさまざまな細かな条件でメールをカウントできるんだ。

練習問題

GASを使って、以下のメール件数をカウントするスクリプトを書いてみよう。

  • 「仕事」ラベルのメール件数を数えよう
  • 過去30日のメール件数をカウントしよう

 

 

解答・解説


function countWorkEmails() {
  var label = GmailApp.getUserLabelByName("仕事");
  if (label) {
    var threads = label.getThreads();
    Logger.log("「仕事」ラベルのメール件数: " + threads.length);
  }
}

function searchLast30DaysEmails() {
  const today = new Date();
  
  // 30日前の日付を計算
  const thirtyDaysAgo = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30);
  
  // 日付を YYYY/MM/DD 形式に変換(Gmail検索クエリ用)
  const formatted = Utilities.formatDate(thirtyDaysAgo, Session.getScriptTimeZone(), "yyyy/MM/dd");
  
  // 検索クエリ作成
  const query = `after:${formatted}`;
  
  // 検索実行
  const threads = GmailApp.search(query);

  Logger.log(`過去30日間のスレッド数: ${threads.length}`);
}

countWorkEmails()では、GmailApp.getUserLabelByName(“仕事”)で「仕事」ラベルを取得し、そのメール件数をカウントする。

countEmailsFromPastMonth()では、GmailApp.search(‘after:30d’)で過去30日のスレッドを検索し、その件数を数えている。

わぁ、これでGASでメールの件数を簡単に数えられるようになった気がします!
猫男
猫男
catman
catman
その調子だ!どんどんGASを使いこなして、メール管理をもっとシンプルにするんだ!