【GAS】Gmailの送信日時を取得する方法

GASgetDate,GmailApp,sendEmail

Google Apps Script(GAS)を活用すると、Gmailの送信日時を簡単に取得できます。この機能は、メールの送信履歴を管理したり、データを分析する際に役立ちます。この記事では、送信日時の取得方法を解説し、具体的なコード例や応用例を紹介します。

GASでGmailの送信日時を取得するメリット

  • 履歴管理の効率化: 送信したメールの日時を取得することで、スプレッドシートなどに記録して履歴を簡単に管理できます。
  • 業務改善: 特定の期間内に送信されたメールをフィルタリングし、業務フローを分析できます。
  • 自動化: GASを使えば手動での確認作業を自動化し、時間を節約できます。

Gmailの送信日時を取得する基本方法

GASでは、GmailAppクラスのgetMessages()getDate()メソッドを使用して、特定のメールスレッドから送信日時を取得できます。

基本構文

let threads = GmailApp.search("条件");
threads.forEach(thread => {
  let messages = thread.getMessages();
  messages.forEach(message => {
    let sendDate = message.getDate(); // 送信日時を取得
    Logger.log(sendDate);
  });
});

具体例:送信日時を取得するスクリプト

以下は、件名に「重要」というキーワードが含まれるメールの送信日時を取得するスクリプトです。

function getSendDates() {
  // 件名に「重要」を含むメールを検索
  const threads = GmailApp.search("subject:重要");

  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      // 送信日時を取得
      const sendDate = message.getDate();
      console.log("送信日時: " + sendDate);
    });
  });
}

実行結果:
以下の形式で送信日時がログに出力されます。

送信日時: Wed Jan 01 2025 15:00:00 GMT+0900 (Japan Standard Time)
送信日時: Thu Jan 02 2025 10:30:00 GMT+0900 (Japan Standard Time)

応用例1: 送信日時をスプレッドシートに記録

メールの送信日時をスプレッドシートに記録することで、簡単に履歴を管理できます。

function saveSendDatesToSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const threads = GmailApp.search("subject:重要");

  let row = 1; // スプレッドシートの開始行

  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      const sendDate = message.getDate();
      // 日時をスプレッドシートに書き込み
      sheet.getRange(row, 1).setValue(sendDate);
      row++;
    });
  });
}

応用例2: 特定期間内の送信メールを抽出

以下のコードは、2025年1月1日から2025年1月31日までの送信メールの日時を取得する例です。

function getSendDatesByPeriod() {
  const startDate = new Date(2025, 0, 1); // 2025年1月1日
  const endDate = new Date(2025, 0, 31);  // 2025年1月31日

  const threads = GmailApp.search("after:2025/01/01 before:2025/02/01");

  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      const sendDate = message.getDate();

      // 期間内のメールのみ処理
      if (sendDate >= startDate && sendDate <= endDate) {
        console.log("期間内の送信日時: " + sendDate);
      }
    });
  });
}

注意点

Gmail APIのリクエスト制限

  • GASでのGmailデータ取得には、1日あたりのリクエスト制限があります(無料アカウントは100件/日)。
  • 必要なデータだけを効率的に取得するようスクリプトを設計しましょう。

権限の確認

初回実行時にGmailへのアクセス権限が求められます。承認を行わないとスクリプトが動作しません。

データのセキュリティ

送信日時は業務上の重要な情報となる場合があります。取得データを適切に管理し、アクセス制限を設定しましょう。

まとめ

GASを使用することで、Gmailの送信日時を効率的に取得・管理できます。以下の手法を活用し、業務効率化を目指しましょう。

  • getDate()メソッドで簡単に送信日時を取得
  • スプレッドシート連携で履歴を記録・管理
  • 特定条件や期間での抽出を自動化

これらの方法をぜひ試してみてください!