この記事は、Google Apps Script Advent Calendar 2022 の12日目の記事です。

Google Apps Script Advent Calendar 2022
https://qiita.com/advent-calendar/2022/google-apps-script

Gmailの受信トレイを整理しておくとメールを探しやすくて良いのですが、
面倒なので放置してしまい、
受信トレイにメールがたまってしまいがちです。

整理作業を少しでも楽に出来ないかと思い、
このエントリでは、保存不要なメールを自動でアーカイブする仕組みを考えてみます。

例えば、クレカの利用通知・各種サービスのログイン通知など、
受信して内容を見る必要はあるが、保存が不要なものは、
一旦、受信トレイに入れて、しばらくしたら勝手にアーカイブされると都合が良いです。

ここでは、次のような方法で実現してみます。

  • Gmailのフィルタでラベル「通知」をつける
  • GoogleAppScriptで「通知」ラベルがついたメールは、7日経過したらアーカイブする

このような、メール着信時点でなく時間差で何かやりたい場合は、
GoogleAppScriptを使うと便利です。

Gmailのフィルタでラベルをつける

Gmailの設定「フィルタとブロック中のアドレス」で、
「新しいフィルタを作成」から、対象とする条件を指定して、
『処理: ラベル「通知」を付ける』を指定します。

GoogleAppScriptでメールをアーカイブ

Google App Script に移動します。

Google App Script
https://script.google.com/home

「新しいプロジェクト」でプロジェクトを作成します。

プロジェクトタイトル: Gmailの自動整理

コード:

function archiveNotification() {
  var threads = GmailApp.search('label:通知 older_than:7d', 0, 100);
  for (var i = 0; i < threads.length; i++) {
    if (threads[i].isInInbox()) {
      threads[i].moveToArchive();
    }
  }
}

Google App ScriptからGmailを扱う方法は、次を参考にしてください。

Gmail Service | Google App Script
https://developers.google.com/apps-script/reference/gmail

searchメソッドに指定するクエリは、次を参考にしてください。

Gmail で使用できる検索演算子 | Gmailヘルプ
https://support.google.com/mail/answer/7190?hl=ja

左メニューで「トリガー」を開き「新しいトリガー」でトリガーを作成します。
次は、毎日0~1時の間に実行する場合の設定例。

  • 実行する関数を選択: archiveNotification
  • 実行するデプロイを選択: Head
  • イベントのソースを選択: 時間主導型
  • 時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
  • 時刻を選択: 午前0時~1時

こういった個人レベルで使いやすいように自動化できるのはメールの良いところですね。
チャットツールのように、組織・チームで運用されていると、
個人の都合で、自動化の手続きを自由に組み込むのは難しいので。

以上。。