earthpg:GAS専門のプログラミングスクール

Google Apps Scriptでメール受信日時を取得する超簡単ステップガイド

GASを使って受信したメールの日時を取得したいんですけど、どうしたらいいでしょうか…?
猫男
猫男
catman
catman
それなら、catmanがその方法を教えてやろう。GASを使えばメールの受信日時も簡単に取得できるんだ。

GASでメールの受信日時を知ろう

GASを使えば、受信メールの情報を自在に取得できる。まずは基本となるGmailサービスを使って、受信したメールの日時を取得する手順を確認しよう。

Gmailサービスを活用する

GASの中でもGmailサービスはとても便利だ。まずはこれを使いこなすと良い。

 function getEmailReceivedDate() {
    var threads = GmailApp.getInboxThreads(0, 1);
    var messages = threads[0].getMessages();
    var receivedDate = messages[0].getDate();
    Logger.log(receivedDate);
 } 

このスクリプトでは、受信トレイの最新メールスレッドを取得し、そのスレッド内の最新メールの受信日時をログに出力している。

GmailApp.getInboxThreads():受信トレイのスレッドを取得するメソッドだ。getInboxThreads(start, max) で、最新の1件(インデックス0から1件)のスレッドを取得しているんだ。

threads[0].getMessages():指定したスレッド内のメールを取得する。スレッドを1件だけ取得しても、スレッドは配列だからインデックス番号を指定しないといけないんだな。

messages[0].getDate():メールの受信日時を取得する。messages[0] は「スレッド内の最初のメール」で、getDate() はそのメールが届いた日時だ。

GASで受信メールの日時の使い方を学ぶ

メールの受信日時を取得することで、さまざまな自動化が可能になる。その活用法についても考えてみよう。

自動リマインダーを作る

受信日時を利用すれば、特定のメールに基づいたリマインダーを自動設定することもできる。例えば、特定の件名で絞り込んだメールの受信日時を確認し、新しいタスク管理ツールに自動登録するのも一策だ。

スクリプトの応用例

特定の時間や条件に応じた自動処理を実行する方法を、次の例で見てみよう。

 function checkRecentEmails() {
    var threads = GmailApp.search("subject:重要 before:2d");
    for (var i = 0; i < threads.length; i++) {
       var messages = threads[i].getMessages();
       for (var j = 0; j < messages.length; j++) {
          var receivedDate = messages[j].getDate();
          if (receivedDate > new Date(Date.now() - 2 * 24 * 60 * 60 * 1000)) {
             Logger.log("最近受信したメール: " + messages[j].getSubject());
          }
       }
    }
 } 

件名に「重要」を含み、2日以上前に受信されたスレッドから、その中にあるメールのうち、直近2日以内に届いたものをログに表示している。

  • GmailApp.search():特定の条件にマッチするメールを検索する。
  • new Date():現在の日時を取得し、ミリ秒単位で過去の日時と比較する。

練習問題

GASを使って、特定の送信者からのメールの受信日時を取得するスクリプトを書いてみてください。

 

 

解答と解説

 function getSpecificSenderEmailDate() {
    var threads = GmailApp.search("from:specific_sender@example.com");
    for (var i = 0; i < threads.length; i++) {
       var messages = threads[i].getMessages();
       for (var j = 0; j < messages.length; j++) {
          var receivedDate = messages[j].getDate();
          Logger.log("受信日時: " + receivedDate);
       }
    }
 } 

このスクリプトでは、送信者が「specific_sender@example.com」のメールを取得し、そのメールの受信日時をログに出力している。

検索条件としてGmailApp.search()メソッドを使用。

この方法により、特定の送信者からのメールに限定して受信日時を取得できるはずだ。