Warning: Trying to access array offset on value of type bool in /home/r1029599/public_html/engineer-log.net/wp-content/themes/simplicity2/lib/customizer.php on line 5404

Google Apps ScriptでGmailの中にある不要のメールを定期削除する方法

職場のアラートメールは多すぎて、しかも不要なものが多いので、
毎回毎回手削除は流石にアナログすぎるので、Google Apps Scriptを使って自動削除スクリプトを作りましたw

ステップ1:
削除したメールをGmailのフィルター機能を使って、ラベルを設定します。
参照ページ:
Gmail のラベルとその使用方法
ラベルとフィルタでGmailをスピード仕分け

ステップ2:
Google Driveを開き、右クリックでGoogle Apps Scriptを新規します。
※Google Apps Scriptがない場合、「アプリを追加」から探してください!
スクリーンショット 2016-03-15 13.10.49

ステップ3:
それではコーディングしましょうw
僕はfunction名をnew_gmail_cleanupに設定しました。
(なぜnewなのか?別バージョンのoldがあるからw)

今回使うGoogle Apps Script関数は下記2つのみです

・GmailApp.search
Gmail検索用の関数です。(検索条件、スタート値、マックス値)を設定すれば、
自動的に該当メールを返してくれます。
スタート値とマックス値を指定しなくても使えます。
moveThreadsToTrashは一度削除できる最大件数は100件なので、今回は100を指定します。

・GmailApp.moveThreadsToTrash
対象メールを削除する関数です。
searchで引っ張ってきたメールをそのまま入れて、終了w
因みに最大件数は100件!

一度に大量のメールを削除しようとすると最大実行時間を超えて、スクリプトが落ちるので、
一回は100件まで削除して、トリガーで時間単位で回すことにしました。

sample↓

function new_gmail_cleanup() {
  /**
    * クリーン設定
    *   - 対象ラベル名:削除除外日数
    */
  var targets = {
      '対象ラベル名1' : '削除除外日数',
      '対象ラベル名2' : '削除除外日数',
      '対象ラベル名3' : '削除除外日数',
  };

  // 対象ラベルのループ処理
  for (var labelName in targets) {
    var searchCond = 'label:' + labelName + ' older_than:' + targets[labelName];
    threads = GmailApp.search(searchCond,0,100);
    if ( threads.length > 0){
      GmailApp.moveThreadsToTrash(threads);
      return;
    }
  }
}

ステップ4:
一回の実行は100件までしか削除できないので、トリガーを設定して定期実行していきます。

「リソース」から「現在のプロジェクトのトリガー」を選択します。
スクリーンショット 2016-03-15 13.30.03

15分ごとに起動に設定しましょう
あまり短すぎるとGoogleからこのようなアラートメールを送られてくるので、要注意!
「サービスで 1 日に使用しているコンピュータ時間が長すぎます」
スクリーンショット 2016-03-15 13.30.20

これで、一旦自動メール削除スクリプトの作成は完了ですw

– PR –
– PR –