LoginSignup
3
4

More than 3 years have passed since last update.

【GAS】定期的にいらないメールを消したいな

Last updated at Posted at 2020-08-16

はじめに

こんにちは。

先日ふと思ったのですが、Gmailめっちゃ溜まってて、いらないメールたくさんあるなと。
特にメールマガジンとか、マネーフォワードMEの出金のお知らせとか。。

フィルタでゴミ箱に勝手に移動してもいいけど、理想はGmailでアプリでプッシュ通知が来る受信箱に入れて、1度はメールに目を通したい。

そうだ、しばらくしたら勝手に消そう。

作戦

  1. Gmailでしばらくしたら消したいメールに任意のラベルを付加するフィルタ作成。
  2. GASで1で設定したラベルのメール検索して指定期間より前のメールを削除。
  3. GASのトリガーで毎日実行。

実装

  1. とりあえずマネーフォワードMEから来るメール(from:feedback@moneyforward.com)に対して、過去30日で自動削除というラベルを付加するフィルタ作成1
  2. GASは以下で行けた。
  3. GASの時間ベースのトリガーで0-1時に実行に設定。

GAS

code.gs
const deleteMail = () => {
  let offset = 0;
  const limit = 500;
  const now = new Date();
  const ymd = Utilities.formatDate(new Date(now.getFullYear(), now.getMonth(), now.getDate() - 30), 'Asia/Tokyo', 'yyyy/MM/dd');   

  while (true) {
    var threads = GmailApp.search(`label:過去30日で自動削除 before:${ymd}`, offset, limit);
    offset += limit;

    for (thread in threads) {
      for (key in threads[thread].getMessages()) {
        if (threads[thread].getMessages()[key].isInTrash()) {
          continue;
        }
        threads[thread].getMessages()[key].moveToTrash();
      } 
    }
    if (threads.length < limit) break;
  }
}

おわりに

これでプッシュ通知でメールを即座に確認できるし、ほっといても勝手に消えるから、やりたいことは満たせた。けど、何かに会員登録するたびにフィルタ設定編集するのはめんどそう :thinking:

3
4
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
3
4