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番目に条件とマッチした文字列が入ってます。
あとは煮るなり焼くなり・・・