Gmailで古いメールがinboxにたまるのが嫌なのでGoogle Apps Scriptで自動でアーカイブしている

Gmailで古いメールがinboxにたまるので自動でアーカイブしたい。

Google Apps Script(GAS)を使って、定期的に古いメールをアーカイブする。

Apps Script – Google Apps Script

「新しいプロジェクト」から新しいプロジェクトを作る。

「エディタ」で以下ようなコードを書く。

// inboxにる既読かつスターなしかつ最終更新日が1ヶ月以上前のメール(スレッド)をアーカイブする
function myFunction() {
  let threads = GmailApp.getInboxThreads()
  let d = new Date();
  d.setMonth(d.getMonth() - 1)

  // アーカイブするメールに付けたいラベル
  let label = GmailApp.getUserLabelByName('stale')
  
  let archivedCount = threads
    // 1回の実行でアーカイブする上限をつけたいとき
    .slice(-50)
    // 既読のみアーカイブする
    .filter( x => x.markRead )
    // スター付きはアーカイブしない
    .filter( x => !x.hasStarredMessages())
    .filter( x => x.getLastMessageDate() < d)
    .map( function(x) {
      x.addLabel(label)
      x.moveToArchive()
    }).length;
    console.log(archivedCount);
}

エディタで実行すると権限が必要だと言われるので、権限を付与する。

「トリガー」で定期実行するトリガーを追加する。日付ベースで例えば毎日0時〜1時とか、毎週月曜日の午前10時〜11時とか。

テストが書けてないのであんまり複雑なことはしたくないが、これくらいなら大丈夫だろう。

これでinboxにたまったメールを手動でアーカイブしていく時間が省けてうれしい。