概要
使っているGmail宛に色々なメールが届いていますが,「すべての受信トレイ」をよく見る自分からすると,会社用メールとプライベートメールがごちゃまぜになるのは余り気分がよくありません.なので毎日会社用メール宛に届く似たようなメールはラベル付けを行ってGASで自動的にアーカイブ化するようにします.
ラベル付けとフィルタリング設定
Gmailの左下にあるラベルの「+」からラベルを作成できます.
そこから自分がメールのフィルタリングしたいラベルを作成します(例: AWS,GitHubなど)
次にGmailの設定から「フィルタとブロック中のアドレス」をクリックします.
次にフィルタリング設定を行います.メールの宛先や件名から既存のメールをフィルタリングすることができます.
下記の画像では,Googleカレンダーをフィルタリングしたので「calendar」を含む設定にします.
次に「フィルタを作成」をクリックします.
メールが設定した条件に完全一致する場合に実行するものを選択できます.
今回の場合は以下を選択します.
- 受信トレイをスキップ(アーカイブする)
- ラベルを付ける: (作成したラベル)
- 一致するスレッドにもフィルタを適用する.
上記で問題がなかったら「フィルタを作成する」をクリックすることでフィルタが作成されます.
作成したラベルをクリックすると,検索条件に基づいたメールがアーカイブ化されています.
新たに受信したメールをGASを用いて自動的にアーカイブ化
上記のやり方はすでに受信したメールをアーカイブ化することができますが,新たに受信したメールは手動でアーカイブ化するしかありません.それはやりたくないので,Google Apps Scripts(GAS)を用いて新たに受信したメールは1日後にアーカイブ化するようにします.
以下がコードになります.
function archiveLabelEmails() {
// 昨日の日付と今日の日付を取得
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
var today = new Date();
// 昨日の日付と今日の日付をYYYY/MM/DD形式の文字列に変換
var yesterdayString = Utilities.formatDate(yesterday, Session.getScriptTimeZone(), 'yyyy/MM/dd');
var todayString = Utilities.formatDate(today, Session.getScriptTimeZone(), 'yyyy/MM/dd');
// すべてのラベルを取得
var labels = GmailApp.getUserLabels();
// 各ラベルに対して処理を行う
for (var i=0; i < labels.length; i++) {
var label = labels[i];
// ラベルが付与されているメールスレッドも取得
// ラベルが付与され、日付が一致するメールを検索
var searchQuery = 'label:' + label.getName() + ' after:' + yesterdayString + ' before:' + todayString;
var threads = GmailApp.search(searchQuery);
// 各スレッドをアーカイブ
for (var j = 0; j < threads.length; j++) {
threads[j].moveToArchive();
}
Logger.log("Completed: " + label.getName());
}
}
上記のコードをデプロイします.
次にトリガーを設定します.
自分の場合は毎日午前0字から1時の間に上記のコードを実行するようにしています.
上記を設定することで,新たに受信したメールでも,1日後にはメールをラベルごとにアーカイブ化することができます.
終わりに
基本的に毎日受信するメールは似たような内容のものが多いので,ラベル付けによるフィルタリングとGASをうまく利用することで本当に重要なメールを確認することができます.
本記事が参考になったら幸いです.