LoginSignup
9
10

More than 3 years have passed since last update.

GASでGメールを自動削除する

Last updated at Posted at 2019-07-03

はじめに

Gメール削除する際に、件数が多くて削除に時間がかかったり、不要・必要をいちいち目grepで選択したりと面倒が多かったのでGAS(Google Apps Script)で改善しました。

毎日チャットツールやタスク管理ツールのバックアップとしてメールが飛んでくるため、Gドライブの容量があっという間に食いつぶされていました。
ラベルをつけても見ないメールが多く、業務に関係ないメールは削除した方が精神衛生上良いと判断しました。

現在は、Gドライブの容量を心配したり、わざわざ自分でメールを消す必要がなくなったので、とてもハッピーです👲

GASの詳細な解説やもっと良いコードは他の方が紹介していると思いますので、ここでは私が使っているGASの紹介と、GASのトリガー登録までやっていきたいと思います。

GASの作成

GASはJS(JavaScript)で記述・作成します。
私は実務でJSを利用した経験がありませんでしたが、ネットで拾ったサンプルコードと削除対象のメールを検索する条件が分かれば簡単に作成できました。

メールの検索窓に入れる条件をそのままGASに移植できるので、必要な条件文が合っているかすぐに確認できるのが良いところです。

・検索条件例:1か月前 かつ スターのないメール
gmail.png

コードに転記する場合、条件文(文字列)を連結させるため、検索演算子の前か後にスペースを入れておく必要があります。

GmailApp.search('older_than:1m' +' -is:starred');
→ 条件文はolder_than:1m -is:starredになる

Gmail で使用できる検索演算子が分かりやすかったので、参照をお勧めします。

ひな形のコード

#for文よりも良いコードがあれば採用したい

deleteMail.gs
function deleteOldMail() {
  //検索条件を指定
  var deleteThreads = GmailApp.search(検索条件);

  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
}

例1:1か月前に受信した、スターなしメールを削除

deleteOldMail.gs
function deleteOldMail() {
  //検索条件:受信日が1か月前 && ☆スターなし
  var delayDays = "1m";
  var deleteThreads = GmailApp.search('older_than:'+delayDays+' -is:starred');

  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
}

例2:受信日が14日前でスターなし、ラベル"alert"のメールを削除

deleteAlertMail.gs
function deleteAlertMail() {
  ///検索条件:受信日が14日前 && alertラベル && ☆スターなし
  var deleteSubject = "alert" 
  var delayDays = "14d";
  var deleteThreads = GmailApp.search('older_than:'+delayDays+' subject:'+deleteSubject+' -is:starred');

  //検索条件に合致するメールをゴミ箱に移動
  for (var i = 0; i < deleteThreads.length; i++) {
    deleteThreads[i].moveToTrash();
  }
}

トリガーにGASを登録

作成したコードを確認し、トリガーに登録します。

  • 例:1か月前に受信したスターなしメールを削除するdeleteOldMail.gsを登録

1. 時計マーク(赤枠)をクリックし、トリガー一覧に移動

gmail2.png

2. トリガーを追加(赤枠)を押下

gmail4.png

3. トリガーを設定し、保存を押下

設定項目名 設定 補足
実行する関数を選択 deleteOldMail 実行するGAS
実行するデプロイを選択 Head デフォルトはHead
イベントのソースを選択 時間主導型 カレンダーも可
時間ベースのトリガーのタイプを選択 時間ベースのタイマー 日週月など細かく選択可能
時間の間隔を選択(時間) 1時間おき トリガーのタイプによって項目が異なる
エラー通知設定 毎日通知を受け取る 実行失敗すると通知

gmail5.png

4. 設定されていることを確認

gmail6.png

5. 定刻に実行されていることを確認

テストのため手動で確認しても良い
gmail7.png

まとめ

GASでGメールを自動削除する方法を列挙しました。
コードは稚拙ですが、運用がかなり楽になりました。
簡単なプログラミング経験があれば実装も容易ですし、他にもいろいろ自動化できることが多そうです。また何かあれば取り組んでいきたいですね。

参考

  1. Gmailの受信トレイ内のメールを自動削除するやり方
  2. Gmailのフィルタ機能のこうやれば簡単にできる
9
10
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
9
10