Google関連

[Google Apps Script]メールからMessage-IDヘッダーを取得する

はけた(@excelspeedup)氏のツイートで、GASでメールのMessage-IDヘッダーが取得できるのか?といった内容のものがありました。

たしかメールヘッダーも取得するメソッドが用意されていたはずなので、さっそく試してみました。

//メールからMessage-IDヘッダーを取得
function getMessageIdHeader() {
  var msg = GmailApp.getInboxThreads(0, 1)[0].getMessages()[0];
  var content = msg.getRawContent();
  var matches = content.match(/^Message-ID:.*$/gim);
  if (matches !== null) {
    for (var i = 0; i < matches.length; i++) {
      Logger.log(matches[i]);
    }
  }
}

コードは非常にシンプルで、GmailMessage.getRawContentメソッドでメールのソースを文字列として取得し、matchメソッドで「Message-ID」を抜き出しているだけです。
(一つのメールにMessage-IDヘッダーが複数あることは無いので、ループさせる必要はありませんが、確認のためにループで回しています。)

また逆に、「rfc822msgid:」検索演算子を使うことで、Message-IDヘッダーからメールを検索することもできるので、そのためのスクリプトもついでに書いてみました。

function sample() {
  var msg = getMessageFromMessageID("Message-IDヘッダー");
  if (typeof msg !== "undefined") {
    Logger.log(msg.getSubject());
  }
}

//Message-IDヘッダーを指定してメッセージ取得
function getMessageFromMessageID(msgId) {
  var q = "rfc822msgid:" + msgId;
  var threads = GmailApp.search(q);
  if (threads.length > 0) {
    var messages = GmailApp.getMessagesForThread(threads[0]);
    if (messages.length > 0) {
      return messages[0];
    }
  }
}

中々使用する機会は無いと思いますが、ご参考まで。

2019/5/21 追記:
2019/5/20付で追加されたGmailMessage.getHeaderメソッドを使うことで、ヘッダー名を指定するだけで値を取得できるようになりました。

アクティブなIEのタブを閉じるVBAマクロ前のページ

Acrobatを使ってPDFファイルを結合するVBScript次のページ

関連記事

  1. Google関連

    Google Apps Script Execution APIを試してみた。

    「「GAS Station #2」に参加してきました。」で書いた通り、…

  2. Google関連

    [Google Apps Script]スプレッドシートをExcelファイル(xlsx)に変換する

    スプレッドシートのファイルメニュー → 形式を指定してダウンロード →…

  3. Office関連

    Google スライドで新規プレゼンテーションを作成するVBAマクロ

    ここ数日PowerPointのマクロに加え、Google Apps S…

  4. Google関連

    スプレッドシートをWeb APIにできるサービスを使ってみた

    ※ 本記事は@kuwazzyさんの記事に続く「Web API Adve…

  5. AppSheet

    AppSheetとGoogle Apps Scriptとの連携機能を試してみました。

    当ブログでも2年ほど前に取り上げたことがある(下記記事ご参照)「App…

  6. Office関連

    CDOを使ってGmail送信を行うVBAマクロ(UTF-8対応版)

    2年ほど前にCDOを使ってGmail送信を行うVBAマクロについて記事…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP