みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Gmail使っていますか!?
まさか…受信トレイ、大量にメッセージ溜まっていませんか?
まさかまさか、何十件も、何百件も…、ましては何千件も溜まっていやしませんよね?
私はGmailアプリで「要のない」メールを都度アーカイブして運用しています。
受信トレイにメールが溜まっているのは…イコール、仕事が溜まっているということ…そんなの耐えられない!ってなわけです。
とはいえ、大量にメールが届いてしまうのは、相手次第…。
そんなときは、GASを使ってさくっと自動アーカイブしちゃいましょう。
ということで今回は、Google Apps ScriptでGmailの受信トレイに溜まった指定の日付以前のスレッドを自動でアーカイブする方法をお伝えします。
Gmailの検索で一定日数以上過去のメールを絞り込む
GASで仕込む前に、Gmailの検索機能での「一定日数以上過去のスレッド」の絞り込み方を確認しておきましょう。
というのも、このGmailでの検索機能での絞り込みの「クエリ」がそのまま、GASでも使えるのです。
今回は、受信トレイに入っているスレッドで、かつ3日前(執筆日時が2020/3/10なので2020/3/7)以前のスレッドという条件にします。
これをGmailで検索するときは
- 受信トレイに入っている→in:inbox
- 2020/3/7以前→before:2020/3/7
という検索演算子を使って以下のようなクエリで検索すればOKですよね。
私のGmailで検索した結果がコチラでした。
まあまあ…ありますね…
さて、その他Gmailで使える検索演算子については以下をご参考くださいね。
GASでGmailのスレッド検索を行う
Google Apps Scriptでは、ここで行ったものと同様のGmailでのスレッド検索を行うことができます。
Gmailのスレッドの検索をするには、GmailAppオブジェクトのsearchメソッドを使います。
クエリには、先程のGmail検索と同様のものを文字列で指定すればOKです。
これで、クエリの条件でヒットしたスレッドを配列で取得することができます。
スレッドの配列をまとめてアーカイブする
さて、こうして取得できたのは「スレッドの配列」です。
そこから配列についてループ回して、一つ一つアーカイブ…そんな処理を想定される方もいるかも知れませんが、もっとシンプルです。
というのも、「スレッドの配列」をそのままそっくりアーカイブする、素敵なメソッドが用意されています。
GmailAppオブジェクトmoveThreadsToArchiveメソッドです。
searchメソッドで取得したスレッドの配列をそのままこのメソッドの引数に渡せば良いのです…簡単ですね!
一定の日付より前のスレッドをアーカイブするスクリプト
以上を踏まえて作成したスクリプトがコチラです。
function archiveThreads() { const searchQuery = 'in:inbox before:2020/3/7'; const threads = GmailApp.search(searchQuery); GmailApp.moveThreadsToArchive(threads); }
特に説明は不要ですね。
実行をした上でGmailを確認すると、以下のように先ほどのスレッドたちは全てアーカイブされます。
なお、searchメソッドによるスレッドの取得数には1回あたり500件という制限がありますので、大量にヒットしてしまいそうなときは注意が必要です。
数千件もあるような方は、何回か実行する必要がありますよ。
まとめ
以上、GASでGmailの一定の日付以前のスレッドをアーカイブするスクリプトを紹介しました。
超シンプルですよね。
ただ、皆さんが言いたいことはわかっています。
日付が固定じゃないか!ということですね。
次回、「今日から3日前より以前のスレッド」を自動でアーカイブできるように、修正を加えていきますよ。
どうぞお楽しみに!