アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

GASで古いGmailを自動削除する方法

Featured image of the post

Google Apps Script(以下GAS)を活用すると、Gmailの整理を自動化することができます。Gmailの受信トレイは時間とともにどんどん蓄積され、必要のない古いメールが大量にたまってしまうことが多いです。手動で削除するのは手間がかかりますが、GASを使えば自動的に古いメールを削除するスクリプトを簡単に作成できます。

この記事では、GASで特定の条件に合う古いメールを自動で削除する手順を紹介します。


[目次を開く]

スクリプトの基本的な考え方

GASで古いメールを削除するための基本的な流れは以下の通りです。

  1. 削除したいメールの検索条件を指定する
    • 日付、ラベル、キーワードなどを基にして、削除対象となるメールを絞り込みます。
  2. メールを削除する
    • 検索結果から削除処理を行います。

Gmailは「削除」という操作を行うと「ゴミ箱」に移動されます。ゴミ箱に移動したメールは30日間保存され、その後完全に削除されます。GASで直接「完全削除」する機能はないため、ゴミ箱への移動が基本的な操作となります。


GASスクリプトの作成手順

1. Google Apps Scriptエディタを開く

まず、GASエディタにアクセスする必要があります。GoogleドライブやGmailの「ツール」メニューから「スクリプトエディタ」を開いてください。

script.google.com 

2. スクリプトを書く

以下は、1年以上前のメールを自動的に削除するスクリプトのサンプルです。これにより、1年以上前の受信メールがゴミ箱に移動されます。※ゴミ箱に入ったメールは30日後に自動削除される

function deleteOldEmails() {
  // 1年以上前の、ラベルやスターが付いていないメールを検索
  const query = 'older_than:1y -is:starred has:nouserlabels'; // Gmailの検索クエリ
  let start = 0; // スレッド取得開始位置
  let batchSize = 100; // 1回のバッチで処理するスレッド数
  let threads;

  do {
    // 検索クエリに基づいてスレッドを取得(バッチサイズごとに)
    threads = GmailApp.search(query, start, batchSize);

    // 各スレッドをゴミ箱に移動
    for (let i = 0; i < threads.length; i++) {
      threads[i].moveToTrash();
    }

    Logger.log(threads.length + ' threads moved to trash in this batch.');
    
    // 次のバッチの開始位置を更新
    start += batchSize;
  } while (threads.length === batchSize); // スレッドがバッチサイズ未満になるまでループ
}
3. デプロイする

初回承認が必要なので権限の確認から進みリクエストを許可してください。

Image in a image block
4. トリガーの設定

このスクリプトを定期的に実行するには、「トリガー」を設定します。以下の手順でトリガーを設定できます。

  1. スクリプトエディタのメニューから「時計アイコン」(トリガー)をクリックします。
  2. 「トリガーを追加」をクリックし、実行したい関数(今回はdeleteOldEmails)を選びます。
  3. 実行する頻度(例えば「日次」)を選択します。時間ベーストリガーのタイプを日付ベースタイマーにし、時刻を選択すればOKです。
Image in a image block

これで、定期的にスクリプトが実行され、1年以上前の古いメールが自動で削除されるようになります。

ちなみにGAS (Google Apps Script) には最大実行時間の制限があり、通常は6分(無料版の場合)を超えるとタイムアウトしてしまいます。

その場合は複数回のバッチの実行が必要になりますが1日1回実行されるようにし数日ほど待っていれば完了する筈です。


削除対象メールを細かく指定する

上記のスクリプトでは、日付のみで削除対象を指定していますが、Gmailの強力な検索機能を活用すれば、より細かく削除するメールを指定することが可能です。

例1: 特定のラベルが付いているメールを削除

例えば、特定のラベルが付いた古いメールのみを削除したい場合、以下のようにクエリを変更します。

const query = 'label:newsletters older_than:1y';

このクエリでは、ラベルが「newsletters」のメールで、30日以上前のものが削除対象になります。

例2: 未読メールのみ削除

未読のまま放置されている古いメールを削除したい場合は、以下のクエリを使います。

const query = 'is:unread older_than:1y';

これにより、1年以上未読のままのメールが削除されます。

例3: 特定のキーワードを含むメールを削除

特定のキーワードが含まれるメールのみを削除したい場合は、次のようにクエリを設定します。

const query = 'subject:「キャンペーン」 older_than:1y';

件名に「キャンペーン」を含む古いメールが削除されます。


注意点

  • 削除操作は取り消せない

    ゴミ箱に移動したメールは30日後に自動的に完全削除されます。誤って重要なメールを削除してしまわないよう、十分に確認してからスクリプトを実行してください。

  • 一度に削除できるメール数

    Gmail APIの制限により、一度に大量のメールを削除することはできません。スクリプト実行中にエラーが発生した場合は、処理対象を小分けにするか、スクリプトの実行頻度を調整してください。


まとめ

GASを使って、古いGmailを自動で削除する方法を紹介しました。日付やラベル、キーワードなどの条件を使って効率的にメールを整理することで、日々のメール管理の手間を減らせます。適切な検索クエリを使用し、不要なメールを定期的に整理することが、受信トレイをすっきりさせることができるのでおすすめです。

より効率的に開発したい場合は下記の記事を参考に開発環境の構築に挑戦してみましょう。

📄Arrow icon of a page linkGASのローカル開発環境を構築する方法

業務開園に関する無料相談も受け付けておりますので、ぜひ、お問合せよりご連絡ください。

業務効率化・DX推進でお悩みですか?

オンラインセッションで課題を可視化し、最適な解決策をご提案します。

  • DX推進を何から始めればいいかわからない
  • ツール導入を検討している
  • 社内でデジタル人材を育成したい
まずは無料で課題整理

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

業務効率化・DX推進のご相談はこちら

伴走支援プログラムの詳細を見る
無料相談はこちら