かずきち。の日記

サーバサイドエンジニアのつぶやき

これで24時間働ける!GASでGmailを自動削除するスクリプト(起動10分以上)のトリガーを1分に間隔にしたら、すごいことが起きた!

GASで特定の条件のGmailを自動削除します 特定の条件のメールを定期的に様々な条件で削除するスクリプト

ことの発端はGmailの容量が不足しつつあること

f:id:kazukichi_0914:20200612174831p:plain

GoogleからGmailの追加容量を買いませんか?という囁きが来るが

追加容量は買いたくない。

だったら自分で何が何でもGoogleストレージの容量をスクリプトで開放させたい!ということで、スクリプトを書きましたー!
まずは条件に対応するメールを消すというスクリプトを書きます。

//トリガーを設置する関数(testget関数を実行予定として登録)
function setTrigger(){
   var triggerman = ScriptApp.newTrigger("deleteOldMail")
                   .timeBased()
                   .everyMinutes(6)
                   .create();
}

function deleteOldMail() {
  //検索条件を指定
  var deleteThreads = GmailApp.search("六本木ヒルズ近辺の天気");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("クーポン");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("SBI証券");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }

  //検索条件を指定
  var deleteThreads = GmailApp.search("Mailtrack Daily Report");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
  
    //検索条件を指定
  var deleteThreads = GmailApp.search("has just read");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  } 
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("マクロミル");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("a8");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("タイムセール");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  } 
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("label:omiai-matchbook-pairs");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
    
  //検索条件を指定
  var deleteThreads = GmailApp.search("nomura@mail.hometrade.nomura.co.jp");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  } 

  //検索条件を指定
  var deleteThreads = GmailApp.search(" from:(cs@sbisec.co.jp)");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  } 
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("label:お名前.com");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  } 
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("label:ファンタスリサーチ");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
  
  //検索条件を指定
  var deleteThreads = GmailApp.search("label:Socialdog");
  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  } 
  
 //トリガーを削除
 var allTriggers = ScriptApp.getProjectTriggers();
 for (var i = 0; i < allTriggers.length; i++) {
   ScriptApp.deleteTrigger(allTriggers[i]);
 }
}
毎分6分おきに起動する

まずポイントはここですね。

function setTrigger(){
   var triggerman = ScriptApp.newTrigger("deleteOldMail")
                   .timeBased()
                   .everyMinutes(6)
                   .create();
}

ここにsetTigger()のfunctionを設置します。
こいつはdeleteOldMailというfunctionを6分おきに起動させるというトリガーを作るコマンドになります。
ここの「6」という数字にはわけがあります。
6分がGASの起動時間になりますので6より多いと無駄にスクリプトが走ってしまい、6より小さいとスクリプトが途中で止まってしまい次に繋がりません。
なのでぴったし6分置きのトリガーにすることでトリガーを作りすぎず、途中でスクリプトの実行を止めないということができます。

試しに1分間隔のトリガーを作成しまくったら、こんなことになった。

f:id:kazukichi_0914:20200612182257p:plain

トリガーが走りすぎて、実行中スクリプトでコンソールが溢れてしまったw
コツは6分おきにトリガーを作るということをして、常にGoogleに動いてもらう必要がありますね!

たぶんスクリプトの設置方法などわからないと思いますので、こちらからサービスをご購入ください。
スクリプトの使い方がわかる方はどうぞお使いください。

GASで特定の条件のGmailを自動削除します 特定の条件のメールを定期的に様々な条件で削除するスクリプト

スクリプトの実行条件の変更、スクリプトの中身の変更をサポートしてほしいという声が多数ありましたので、オプションをご用意しました。

f:id:kazukichi_0914:20200613111702p:plain

スクリプトの動かし方、自動起動の設定方法がわかる方はご自身で設置していただければよいですが、実行方法・カスタマイズ方法がわからない方は上記オプションをご購入ください。
購入後もご自身でメンテナンスできるドキュメントをカスタマイズして納品させていただきます。