Gmailの自動化: 特定の件名を持つメールを自動ラベリングし、指定日数後に自動削除する方法

Gmail

Gmailを効率的に管理するために、特定の件名を持つメールを自動的にラベリングし、一定期間が経過した後に自動で削除したいと考えることはありませんか?この記事では、Google Apps ScriptとGoogleスプレッドシートを使用して、このプロセスを完全に自動化する方法を詳しく説明します。

1. 目標の設定

このプロジェクトの目標は、特定の件名(例: 「レポート」)を持つメールを「99_自動削除」というラベルで自動的にラベリングし、そのラベルが付いたメールを指定された日数(例: 30日)後に自動削除することです。

使用するスプレッドシート

以下のスプレッドシートのように、「削除までの日にち」を指定するセルを用意します。この例ではA2セルに日数を入力します。

2. Gmailのフィルタを設定して自動ラベリングを行う

まず、Gmail内で特定の件名を持つメールに自動的にラベルを付けるフィルタを設定します。

フィルタの設定手順

  1. Gmailを開く: Gmailにアクセスします。
  2. 検索ボックスにフィルタ条件を入力(※件名がレポートの例):
    • 検索ボックスに「subject:レポート」と入力し、検索結果を表示します。
  3. フィルタを作成:
    • 検索ボックスの右側にあるマークから検索オプションを表示をクリックし、「フィルタを作成」を選択します。
  4. ラベルを適用:
    • 「ラベルを付ける」を選択し、「新しいラベルを作成」から「99_自動削除」というラベルを作成して適用します。
  5. フィルタの適用:
    • 過去のメールにも適用するオプションを選択し、フィルタを作成します。

この設定により、件名に「レポート」を含むすべての新しいメールが「99_自動削除」ラベルで自動的にラベリングされます。

3. Google Apps Scriptのセットアップ

次に、Google Apps Scriptを使用して、指定された日数後に「99_自動削除」ラベルが付いたメールを自動的に削除するスクリプトを作成します。

スクリプトのコード

以下のコードをGoogle Apps Scriptにコピーして貼り付けます。このスクリプトは、スプレッドシートのA2セルに指定された日数後に、該当するメールを削除します。

javascriptコードをコピーするfunction autoLabelAndDeleteEmails() {
  try {
    const labelName = "99_自動削除";
    const sheetName = "管理";
    const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = spreadsheet.getSheetByName(sheetName);
    
    if (!sheet) {
      Logger.log(`シート '${sheetName}' が見つかりません。`);
      return;
    }

    const daysToKeep = sheet.getRange("A2").getValue(); // A2セルの値を取得
    if (typeof daysToKeep !== 'number' || daysToKeep <= 0) {
      Logger.log("A2セルの値が無効です。数値を入力してください。");
      return;
    }
    
    const label = GmailApp.getUserLabelByName(labelName);
    if (!label) {
      Logger.log(`ラベル '${labelName}' が見つかりませんでした。`);
      return;
    }
    
    const threads = label.getThreads();
    const now = new Date();
    const daysInMs = daysToKeep * 24 * 60 * 60 * 1000; // A2の値をミリ秒に変換

    threads.forEach(thread => {
      const messages = thread.getMessages();
      const firstMessageDate = messages[0].getDate(); // 最初のメッセージの日付を取得
      const ageInMs = now - firstMessageDate;

      if (ageInMs > daysInMs) {
        thread.moveToTrash(); // 指定日数経過後に削除
      }
    });
  } catch (error) {
    Logger.log(`エラーが発生しました: ${error.toString()}`);
  }
}

スクリプトの解説

  • labelName: 削除対象のラベル名を指定します。この例では「99_自動削除」を使用しています。
  • daysToKeep: A2セルの値を取得し、その日数を元に削除する日数を設定します。
  • 日数経過後の削除: 指定された日数が経過したメールは自動的にゴミ箱に移動されます。

4. トリガーの設定

このスクリプトが定期的に実行されるように、トリガーを設定します。Google Apps Scriptエディタの「時計」アイコンをクリックし、毎日1回スクリプトが実行されるようにトリガーを追加します。

5. まとめ

このブログ記事では、特定の件名を持つメールを自動的にラベリングし、その後指定された日数後に削除するプロセスを自動化する方法を説明しました。これにより、Gmailの管理が効率化され、不要なメールが自動的に整理されるようになります。

この自動化を活用して、Gmailの管理をさらに快適にしましょう!

コメント

タイトルとURLをコピーしました