[GAS]複雑な条件付きメールを一括削除 #7
#6では、Google Apps Script(GAS)を使ってメールを一括削除する方法について学びました。
この一括削除については、宛先で検索するだけではなく色々な条件設定をすることが可能です。
条件付きメールを一括削除
1.新しいプロジェクトを作成
Google ドライブからGASを作成しますので、Google Apps Scriptにアクセスします。
Google Apps ScriptのURL ←クリック
「新しいプロジェクト」を作成します。
GASを作成できました。
2.プロジェクト名を変更
GASプロジェクトが作成できたら、デフォルトでは「無題のプロジェクト」になっているので、 こちらをクリックして適当な名前に変更し、[OK]ボタンをクリックしてください。
3.コードを入力する
これから詳細については説明しますので、まず下記コードを「コード.gs」のところにコピー&ペーストしてください。
function myFunction() {
const SEARCH_TERM = "-is:starred , -is:important , older_than:1d "; //GmailAppで検索窓に入れる情報を取得
const threads = GmailApp.search(SEARCH_TERM, 0, 2); // 検索結果の1件目〜2件目を取得
for (var i = 0; i < threads.length; i++){
threads[i].moveToTrash(); // 取得したメールをゴミ箱へ移動
}
}
こちらのコードを貼り付けたら、下記のような画面になると思います。
これから上記コードについて、確認します。
ここから難しく感じる方もいるかもしれませんが、肩の力を抜いて気楽に読んでください。
4.コードで何しているか理解する
コードで何をしているか、 少しづつ内容を分解して考えると理解しやすくなります。
①複雑な検索条件でデータを取得
今回のメインテーマは、この①の部分です。
const SEARCH_TERM = "-is:starred , -is:important , older_than:1d "; //GmailAppで検索窓に入れる情報を取得
const threads = GmailApp.search(SEARCH_TERM, 0, 2); // 検索結果の1件目〜2件目を取得
「SEARCH_TERM」という変数に、どういう検索条件を設定するかによって取得できるデータが変わってきます。
以下のような検索条件を覚えていると役立ちます。
[検索条件一覧]
is:starred /スター付きメール
-is:starred /スター付きメール以外
is:important /重要メール
-is:important /重要メール以外
label:******* /ラベル付きメール
-label:******* /ラベル付きメール以外
is:unread /未読メール
-is:unread /未読メール以外
in:drafts /下書きメール
-in:drafts /下書きメール以外
in:spam /迷惑メール
-in:spam /迷惑メール以外
has:attachment /添付ファイル付きメール
has:attachment /添付ファイル付きメール以外
[日付条件一覧]
older_than:1d /一日より古い
older_than:1m /一月より古い
older_than:1y /一年より古い
Newer_than:1d /一日より新しい
Newer_than:1m /一月より新しい
Newer_than:1y /一年より新しい
Before:YYYY/MM/DD /YY年MM月DD日より前
After:YYYY/MM/DD /YY年MM月DD日より後
これ以外にもありますが、最低これらのものが使えるようになれば殆どの内容について検索条件を絞ることができます。
「-is:starred , -is:important , older_than:1d」
今回は「スター&重要メールは除外、1日より古い」という検索条件を使ってメールを抽出するようにします。
②取得したデータを削除
①で取得した情報を削除しましょう。「GASでメールを一括削除 #6」で行った処理を同じです。
for (var i = 0; i < threads.length; i++){
threads[i].moveToTrash(); // 取得したメールをゴミ箱へ移動
}
moveToTrash() というメソッドを利用しています。スレッドをゴミ箱に移動しています。
5.コーディングしよう
では上記内容を踏まえて、実際に情報を入力してみましょう。
function myFunction() {
const SEARCH_TERM = "-is:starred , -is:important , older_than:1d "; //GmailAppで検索窓に入れる情報を取得
const threads = GmailApp.search(SEARCH_TERM, 0, 2); // 検索結果の1件目〜2件目を取得
for (var i = 0; i < threads.length; i++){
threads[i].moveToTrash(); // 取得したメールをゴミ箱へ移動
}
}
削除したいメールをテスト作成するときは、捨てメアドというサービスが自由にメールアドレスを作成できるので便利です。
6.プロジェクトを保存→実行
情報を入力したら、「プロジェクトを保存」をクリックしましょう。「プロジェクトを保存」が完了したら、「実行」をクリックしましょう。
7.権限を確認→許可
毎度のことですが、初めてプログラミングを実行する場合、権限の承認が求められます。
「このプロジェクトがあなたのデータへのアクセス権限を必要としています。」と言うポップアップが出ますので、「権限を確認」をクリックしてください。
次の画面で「このアプリはGoogleで確認されていません」と出るので「詳細」から「メールの条件付き一括削除(安全ではないページ)に移動」をクリックしてください。
次の画面で「許可」を求められますので、ご自身のアカウントであることを確認し「許可」をクリックしてください。
8.「実行完了」を確認
「許可」の確認が終わりましたら「実行ログ」のクリックをもう一度クリックしましょう。そして画面上で「実行開始」及び「実行完了」できているか確認しましょう。
プログラミングに問題がなければ、Gmailのゴミ箱にメールが移動しています。
9.GASで条件付きメールを一括削除についておさらい
GASでメールを一括削除するために複雑な条件を設定することも可能です。また条件については、組み合わせでより正確な検索結果を抽出することもできます。
10.まとめ
いかがでしょうか?思ったより簡単ですよね。
Gmailの検索条件と同じ設定をGASで実行することで、より効率的に一括削除をすることが可能です。そして次回#8ではトリガーを設定する方法を学びます。トリガーを設定することができれば、定期的に決められた条件でメールを自動削除できますので、作業効率が上がりますしメールの保存容量の確保にも繋がります。
次回は、「#8 トリガーを設定して一括削除」ついて解説していきたいと思います。