【GAS入門】メールの件数を簡単にカウントする方法
メールの件数を数えるのって、どうやってやるんだろう…GASで簡単にできるって聞いたことあるけど…

猫男

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
その調子だ!どんどんGASを使いこなして、メール管理をもっとシンプルにするんだ!