GoogleAppScriptでGmailの保存不要なメールをアーカイブする
この記事は、Google Apps Script Advent Calendar 2022 の12日目の記事です。
Google Apps Script Advent Calendar 2022
https://qiita.com/advent-calendar/2022/google-apps-script
Gmailの受信トレイを整理しておくとメールを探しやすくて良いのですが、
面倒なので放置してしまい、
受信トレイにメールがたまってしまいがちです。
整理作業を少しでも楽に出来ないかと思い、
このエントリでは、保存不要なメールを自動でアーカイブする仕組みを考えてみます。
例えば、クレカの利用通知・各種サービスのログイン通知など、
受信して内容を見る必要はあるが、保存が不要なものは、
一旦、受信トレイに入れて、しばらくしたら勝手にアーカイブされると都合が良いです。
ここでは、次のような方法で実現してみます。
- Gmailのフィルタでラベル「通知」をつける
- GoogleAppScriptで「通知」ラベルがついたメールは、7日経過したらアーカイブする
このような、メール着信時点でなく時間差で何かやりたい場合は、
GoogleAppScriptを使うと便利です。
Gmailのフィルタでラベルをつける
Gmailの設定「フィルタとブロック中のアドレス」で、
「新しいフィルタを作成」から、対象とする条件を指定して、
『処理: ラベル「通知」を付ける』を指定します。
GoogleAppScriptでメールをアーカイブ
Google App Script に移動します。
Google App Script
https://script.google.com/home
「新しいプロジェクト」でプロジェクトを作成します。
プロジェクトタイトル: Gmailの自動整理
コード:
function archiveNotification() {
var threads = GmailApp.search('label:通知 older_than:7d', 0, 100);
for (var i = 0; i < threads.length; i++) {
if (threads[i].isInInbox()) {
threads[i].moveToArchive();
}
}
}
Google App ScriptからGmailを扱う方法は、次を参考にしてください。
Gmail Service | Google App Script
https://developers.google.com/apps-script/reference/gmail
searchメソッドに指定するクエリは、次を参考にしてください。
Gmail で使用できる検索演算子 | Gmailヘルプ
https://support.google.com/mail/answer/7190?hl=ja
左メニューで「トリガー」を開き「新しいトリガー」でトリガーを作成します。
次は、毎日0~1時の間に実行する場合の設定例。
- 実行する関数を選択: archiveNotification
- 実行するデプロイを選択: Head
- イベントのソースを選択: 時間主導型
- 時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
- 時刻を選択: 午前0時~1時
こういった個人レベルで使いやすいように自動化できるのはメールの良いところですね。
チャットツールのように、組織・チームで運用されていると、
個人の都合で、自動化の手続きを自由に組み込むのは難しいので。
以上。。