Yusuke

【GAS】 Gmailで一定期間経過したメールを削除する

Sun Feb 18 2024
#開発

Next.jsのサイトのホスティングにVercelを用いているのですが、PRでのプレビューデプロイが失敗すると、画像のようなメールが届きます。

Deployment Failed

このメール自体はとてもありがたいのですが、溜まったままなのはなんとなく嫌なので、1ヶ月経過したメールを Google Apps Script を用いて削除することにしました。

検索ワードの決定

まず初めに、削除するメールの検索条件を決定します。

今回はこのように設定していきます。
念の為、スターがついているメールを除外することにします。

(アットマークを [at] としています)

この条件について、Gmail で使用できる検索演算子 を確認しながら、検索ワードにします。

subject:(Failed preview deployment) from:notifications[at]vercel.com older_than:1m -is:starred

実装

先ほど決めた検索ワードからスレッドを検索し、それを削除する関数を作成します。

次のような実装となります。

const deleteEmail = () => {
  const threads = GmailApp.search("subject:(Failed preview deployment) from:notifications[at]vercel.com older_than:1m -is:starred");

  for (thread of threads) {
    thread.moveToTrash();
  }
}

実行ボタンを押して、試しに動かしてみます。

初回はGmailへのアクセス権を付与する必要があります。権限付与を忘れないようにしましょう。

定期実行の設定

この関数を毎日実行するように、「トリガー」ページから画像のように設定します。

trigger

これで完了です!