Gmailの受信ボックス以外の未読メールを一括で既読(GAS)
Google Apps Script(GAS)を利用して未読メールを一括して既読にする
Gmailで受信ボックス以外にあるメールを一括で既読にする方法を紹介します。Google Apps Script(GAS)を利用して定期的に既読にする方法を紹介します
処理の内容は、Gmailの検索クエリを活用し、is:unread -in:inbox(未読、かつ、受信トレイにない)という条件でメールスレッドを抽出して一括処理しています。
使用するコード
function markAsReadOutsideInbox() {
// 受信ボックス(inbox)以外にある未読メールスレッドを最大100件取得
// 件数が多い場合は「100」の数字を増やすか、定期実行してください(最大500件まで)
const searchQuery = "is:unread -in:inbox";
const threads = GmailApp.search(searchQuery, 0, 100);
if (threads.length === 0) {
Logger.log("受信ボックス以外の未読メールはありません。");
return;
}
// 抽出したスレッドをまとめて既読にする
GmailApp.markThreadsRead(threads);
Logger.log(threads.length + " 件のスレッドを既読にしました。");
}
コードのポイント
is:unread -in:inbox:
is:unreadで未読メールを絞り込みます。-in:inboxのマイナス記号により、受信ボックスに入っているメールを除外します。- これにより、特定のラベル(フォルダ)に自動振り分けされた未読メールや、アーカイブされた未読メールだけが対象になります。 [1]
GmailApp.markThreadsRead(threads):
- 取得したメールスレッドを1つの命令で一括既読化するため、処理速度が非常に速くGASの制限に引っかかりにくくなります。
コードを自動化する方法(定期実行)
毎日、または数時間おきに自動でこの処理を実行させたい場合は、GASのトリガー機能を使用します。
- GASエディタの左メニューにある 「トリガー(時計アイコン)」 をクリックします。
- 画面右下の 「トリガーを追加」 をクリックします。
- 実行する関数に
markAsReadOutsideInboxを選択します。 - イベントのソースを 「時間主導型」 に変更します。
- 「日ベースのタイマー」や「時間ベースのタイマー」など、お好みの間隔(例: 毎日深夜など)に設定して保存します。 [1, 2, 3, 4, 5]
これで、手動で操作しなくても受信ボックス以外の不要な未読メールが自動で一掃されるようになります。

