1. Qiita
  2. 投稿
  3. GoogleAppsScript

特定のラベルのついたGmailを定期的に削除するようにした

  • 5
    いいね
  • 0
    コメント

Gmailが気がついたら未読2000通になっていて、精神衛生上よろしくないので定期的に削除するようにスクリプトを組んだ。

大まかな部分はこちらの記事を参考にさせていただいた。
ただ、今回削除したい対象のラベルが複数あり、かつラベル毎に保持期間を作りたかったので、スクリプトについては以下のように実装しなおした。

function myFunction() {
  var delayDays = 7;

  var targetLabelAndPeriod = {"ラベル1": 7, "ラベル2": 7, "ラベル3": 1};
  for (key in targetLabelAndPeriod) {
    var deleteThreads = GmailApp.search('older_than:'+targetLabelAndPeriod[key]+'d -is:starred label:'+ key);

    for (var i = 0; i < deleteThreads.length; i++) {
      deleteThreads[i].moveToTrash();
    }
  }
}

削除したい対象のラベル名と保持期間(日)を連想配列に入れ、これをループで回して順次削除するようにした。

注意することは、対象となるメールが多くなりすぎるとスクリプトの起動時間の制限に引っかかってしまう可能性がある。
はじめのうちはスクリプトの定期起動結果の通知をonにしておいて、時間が足りなくなっているようだったらスクリプトを分割しようと思う。