JavaScript
GoogleAppsScript
gas
gmail
メール

Google Apps Script(GAS)で溜まってきたメールを一掃する方法

メールってかなり色々な場面で活用されていますよね。ただ、メールの削除が面倒で溜まっている人も多いのではないでしょうか。そんな人のためにGmailで指定した条件を満たすメールを一括削除するGoogle Apps Scriptを組んでみました。

そもそもGoogle Apps Scriptって?

Googleが提供するサーバーレス環境です。
この環境を使うと、Googleの色々なサービスを連携したり、外部サービスをつないだりできます。
プログラム動作のトリガーは時間とかhttp postされたらとか選べます。

作ろうと思ったきっかけ

ある日Google Driveで容量を覗いてみるとGmailが案外容量を食っていたから。

つけた機能

今回は、どれくらいのメールが一括削除に引っかかっているか調べたかったのでメールを消したあと何通消したかLINEで送ってくるfunctionも同時に組みました。
この記事を参考に自前で組みたい人は、とあるfunctionとその呼び出しを消すなりコメントアウトするなりしたらライン送信を無効化できます。(後述)

実際のプログラム

コード.gs
function myFunction(){
  //Mainloop
  var name=[消したいメールの検索ワード]
  //関数を呼び出す
  var a=mailDelete(name);
  //Notify to LINE app
  var message="";
  message=message+"今日自動削除されたメール数\n";
  if(a!=0){message=message+a;}
  if(a==0){message=("削除するメールがありませんでした");}
  sendHttpPost(message);
}


function mailDelete(labelname){
//削除するメールの検索
var deleteThreads =GmailApp.search(labelname);
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
  var num=deleteThreads.length;
  return num;
}



function sendHttpPost(message){
  var token =[LINEのトークン];
  var options =
   {
     "method"  : "post",
     "payload" : "message=" + message,
     "headers" : {"Authorization" : "Bearer "+ token}

   };
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

使い方

消すメールは『そのメールを探すには何と検索したらいいか』を条件として指定します。
ラインを送信するには[LINEのトークン]にline notifyのトークンを入れます。
ラインを送信しないならmyFunction内のsendHttpPostを消すとかコメントアウトするとかします。
使用例:label="promotions";とすると広告を一掃できます。

感想

GASで自動化を行うのは今回が初めてだったが、やはりGASのいいところは自由度の高さだ。今後さらに便利にするようコードを改善していきたい。