Google App ScriptでGmailの受信ボックスを自動でアーカイブしちゃう
Outlookメールでは一括処理
というものがあり、n日後に○○する
というようなルールが設定できます。
しかしGmailではできないのでGoogle App Scriptで組む事にしました。
Gmail自体はラベル機能が便利すぎるのでOutlookをメインにはしたくないんですよね。
もくじ
スクリプトの流れ
以下の流れで実装しています。 - 検索クエリを作る - 検索クエリでメールスレッドを取得する - 取得したメールスレッドをアーカイブする
これをトリガー登録して定時実行させるだけです。(GASの定時実行については省略します)
なお、検索クエリについては以下のメールは除外しています。
1.☆つき ウェブブラウザのGmail以外で見るときに、アーカイブさせたくないメールをマークするために使います。
例えば - iPhoneのメールアプリ - フラグをつける - Thunderbird(デスクトップアプリ) - ☆マークをクリック
2. 重要とマークされている
Gmailに設定しているルールで重要にしたものは自分でアーカイブしたいので。
スクリプト
function gmailAutoarchive() { // 固定値。検索クエリと何日前のメールをアーカイブするか。 const SearchQueryFormat = 'in:inbox -is:starred -is:important older:%s'; const DelayDays = 14; // 指定日数前のメールを検索するクエリ文字列を作る var maxDate = new Date(); maxDate.setDate(maxDate.getDate() - DelayDays); var maxDateStr = Utilities.formatDate(maxDate, 'JST', 'YYYY-MM-dd'); var query = Utilities.formatString(SearchQueryFormat, maxDateStr); // クエリでメール検索してアーカイブ var threads = GmailApp.search(query); for (var i = 0; i < threads.length; i++) { threads[i].moveToArchive(); } }
注意点
受信ボックスのメールが多いと getInboxThreads
がエラーになるようなので注意。その場合はページングをする必要があります。
参考リンク
クエリ作る support.google.com
日付のテキスト化 developers.google.com
メールを取得 developers.google.com
以上!