【Gmail】メールを自動削除する方法|GASで指定した条件の古いメールを削除

今回はGoogle Apps Script (GAS)を利用して、指定した条件を満たすGmailの過去メールを自動で削除する方法となります。
【Gmail】GASで指定した条件のメールを自動削除する方法
メールを削除する条件の例
例ではGoogle Apps Scriptのスクリプトで、次の3つの条件のGmailのスレッドを削除します。
- スター付きではないスレッド
- タグがないスレッド
- 2週間前より古い日のスレッド
また、Gmailをスレッド表示で利用してない場合でも、スレッド単位で取得して削除します。
メールの表示設定について
Gmailでメールを表示する設定には、関連するメールをまとめて表示するスレッド表示と、1つ1つのメールを表示する設定があります。表示方法を切り替える方法については以下のリンク先を参考にしてみてください。
メールを削除するスクリプト
Google Apps Scriptでプロジェクトを作成し、次のスクリプトを記述して実行することで、指定した条件のスレッドを削除できます。
また、GASの基本的な利用方法については、以下のリンク先参考にしてみてください。
function myThreadsToTrash() {
// 指定したスレッドを取得
const getThreads = GmailApp.search('-is:starred has:nouserlabels older_than:14d', 0, 50);
console.log(getThreads.length);
// 取得したスレッド数が1以上の場合
if(getThreads.length > 0){
// 取得したスレッドをゴミ箱へ移動
GmailApp.moveThreadsToTrash(getThreads);
// 再帰呼び出し
myThreadsToTrash();
}
}
一定期間・時間ごとに自動削除する場合
Google Apps Scriptではプロジェクトにトリガーを設定することで、作成したスクリプトを一定期間・時間ごとに実行できます。
トリガーの設定方法については以下のリンク先を参考にしてみてください。
Google Apps Scriptのコードについて
今回の例では、Google Apps Scriptで指定したスレッドを取得して削除しています。
また、一度にたくさんのスレッドを取得するとエラーとなる場合があるので、スレッド50件ごと取得して削除する処理を繰り返し、削除するスレッドが0になったら終了させています。
以下、Google Apps Scriptのコードの簡単な説明となります。
指定したスレッドを取得
コード3行目のGmailAppクラスのsearchメソッドでは、引数に指定した条件のスレッドを取得しています。メソッドの第1引数は検索条件となり、第2引数は取得する開始位置、第3引数は取得する最大値となります。
また、今回の例ではスレッドの検索にGmailの検索演算子を利用しています。詳しくは以下のリンク先を参考にしてみてください。
指定したスレッドをゴミ箱へ移動
コード7行目からの箇所では、取得したスレッド数が1以上の場合に、GmailAppクラスのmoveThreadsToTrashメソッドで、引数に指定したスレッドを削除しています。
そして、作成した関数myThreadsToTrashを再帰的に呼び出し、取得できるスレッドが0になるまで処理を続けます。
Gmailで利用できるデータ容量を確認したい場合
Googleの「Googleフォト」「Googleドライブ」「Gmail」では、クラウドのデータを「Google One」と呼ばれるオンラインストレージに保存しています。
そのGoogle Oneの容量を確認する方法については、以下のリンク先を参考にしてみてください。