【GAS】特定のメールを削除する(ソースコードあり)

毎日、たくさんのメールを受信していますが、見ていないメールも多々あり、毎日削除するのはめんどくさい。かといって、ドバっと削除してもまた増えるメールたち。そんなわけで、メールを削除するGASを作ってみました💡これをトリガーに登録すれば、メール自動削除ツールの完成です😜




特定のメールを削除するGAS

冒頭で触れたとおり、手でメールを削除するのがめんどくさいので、GAS作りました💡

ざっくりとソースコードをご紹介。


/**
 * 特定のメールを削除する
 */
function trashGmail() {
  const today = new Date();  /* 今日の日付を取得 */

  var trashMailAddr = "abc@mail.com";  /* 削除したいメールのアドレスを指定 */
  var trashPeriod = 30;  /* 何日前のメールを削除するのか、何日前を指定できるようにした */
  var trashSubject = "【事例】";  /* 削除したいメールのタイトルに含まれる文字を指定できるようにした */
  var beforeDate = new Date(today.getFullYear(),today.getMonth(),today.getDate()-trashPeriod);
  var searchCondition = 'from:"'+trashMailAddr+'" label:Inbox before:'+transDate(beforeDate)+' subject:"'+trashSubject+'"';
  var threads = GmailApp.search(searchCondition,0,50);

  for(var j = 0;j < threads.length;j++) {
    var msgs = GmailApp.getMessagesForThread(threads[j]);
    for(k = 0;k < msgs.length;k++) {
      if(msgs[k].isStarred()) {

        /* スターがついたメールは削除しない */
        continue;
      }

      if(msgs[k].isInPriorityInbox()) {

        /* 重要マークがついたメールは削除しない */
        continue;
      }

      /* メール削除 */
      msgs[k].moveToTrash();
    }
  }


}

黄色の部分を変えてGASを実行すると、特定Gmailのメールが削除されるのでお試しあれ💡

50スレッドまでしか取得しない設定にしているので、51以上のスレッドを処理したければ、青色のとこにある50をもっと大きな数字にしてもらえればと思います☺️MAXは500のようです💡

なお、わたしは黄色の部分をスプレッドシートから取得して、複数メールアドレスを削除するようにしました😜ここにそのソースコードも書くと、ちょっと複雑になるので、その部分は端折りました😅機会があれば、スプレッドシートから取得した情報でメールを削除、という組み合わせの記事も書こうかな😁

GASで地味な作業をどんどん自動化していきたいところです😉