5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gmailに届くメルマガを夜な夜な自動削除

Last updated at Posted at 2018-11-06

はじめに

新聞や雑誌と同じく、定期的に届くメルマガは、最新であることにアイデンティティを持っていますよね。
つまり、最新号以外のメルマガのメッセージなど不要ということになります。
しかし、プライベートのメールをすべてGmailにまとめている私の場合、「1つ前のメルマガ」は既に受信トレイの遥か彼方。ムダにGoogleアカウントの容量を食われてしまいますし、何よりも受信トレイがゴチャゴチャです。
というわけで、寝ている間に勝手に削除してくれるスクリプトを書いてみました。

参考にした記事

ワンポイント

  • 定期的に削除したいメルマガは増減がありそうなので、Googleスプレッドシートに対象のアドレスなどを入力、参照するようにした。
  • 重要なアドレスは対象にしないが、たまに「こんなにも自動削除しているのかー」と眺めたいので処理結果をログとして残す。

実装

script.js
function mailMagazineDeleteBatch() {
  // アドレスなどを入力してあるスプレッドシートファイルを参照
  var spreadSheet = SpreadsheetApp.openById(/*ファイルID*/);
  var sourceSheet = spreadSheet.getSheets()[0];
  // 送信元アドレスと削除しない期間を配列として取得
  var fromList = sourceSheet.getRange(2, 1,sourceSheet.getLastRow(), 2).getValues();
  var deleteCount = 0; //ログ用削除件数カウンタ
  for (var i=0; i<fromList.length; i++){//アドレスの数だけ繰り返し
    //アドレス毎に指定日前かつスターが付いていない受信トレイ内のスレッドを検索
    var deleteThreads = GmailApp.search('from:'+fromList[i][0]+' older_than:'+fromList[i][1]+'d -is:starred in:inbox');
    for (var j=0; j<deleteThreads.length; j++) {//スレッドの数だけ繰り返し
      deleteThreads[j].moveToTrash(); //1件ずつ削除
      deleteCount++; //削除カウンタ加算
    }
  }
  // 2つめのシートにログ出力
  var logSheet = spreadSheet.getSheets()[1];
  var insertRow = logSheet.getLastRow()+1;
  logSheet.getRange(insertRow, 1).setValue(new Date()); //処理完了日時
  logSheet.getRange(insertRow, 2).setValue(deleteCount); //削除件数
}
  • 基本的な文法はJavaScriptに従う1
  • ロジックはコメントの通りですね。

用意したスプレッドシード

image.png

ログ出力結果

image.png

おわりに

初めてQiitaに投稿してみました。
記事の編集画面がサクサクと書けて幸せだったのでたまに投稿できたらなと思います。

  1. シンタックスハイライト用に.jsとしたが実際には.gsである

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?