Gmail

【GAS】Gmailのメールから送信者を取得する

getFrom – Gmailのメールから送信者を取得するメソッド

Gmailに送られてきたメールから送信者の名称を取得するにはgetFromメソッドを使います。

で、そもそもgetFromメソッドはメッセージオブジェクトが持っているので、メッセージオブジェクトを具現化しないといけません。

いでよメフィストフェレス


コード

const getFromName = () => {
  const gmailApp = GmailApp
  const searchedThread = gmailApp.search('subject: 【請求書】送付のご案内')[0]
  const searchedMessage = searchedThread.getMessages()[0]
  const fromName = searchedMessage.getFrom()
  console.log(fromName)
}

実行結果


うしろについてる[0]は配列の1番目といった意味があります。

searchメソッドで取得できるのはスレッドオブジェクトの配列なので、スレッドオブジェクト単体を取得するには[0]とつけることで1番目と指定する必要があるんですね。

さてさて、そんなふうに取得した送信者の名称(アドレスも)ですが、””の送信者名だけとか、<>のアドレスだけ取得したくないですかね?いや、したいっす。

というわけで、””の送信者名だけ、<>のアドレスだけ取得します。matchメソッドと正規表現を使います。

コード

const getFromName = () => {
  const gmailApp = GmailApp
  const searchedThread = gmailApp.search('subject: 【請求書】送付のご案内')[0]
  const searchedMessage = searchedThread.getMessages()[0]
  const fromName = searchedMessage.getFrom()
  const nameOnly = fromName.match(/"([^"]*)"/)[1] // ""の中だけ抜き出す
  const addressOnly = fromName.match(/<([^>]*)>/)[1] // <>の中だけ抜き出す
  console.log(nameOnly)
  console.log(addressOnly)
}

6行目、7行目がmatchメソッドと正規表現を使って抜き出している部分です。

実行結果


分離して取得できたのでもう安心です。


ちなみにmatchメソッドの戻り値も配列でして、配列の2番目に条件とマッチした文字列が入ってます。

あとは煮るなり焼くなり・・・

Copied title and URL