GASでメール内容を簡単取得!初心者向けステップバイステップガイド
最近、GASを使ってメール内容を取得したいと思っていて……でも、どうやったらいいのか全然わからないんです。もっと詳しく知りたいです。

猫男

catman
そうか、それならcatmanがGASでメール内容を取得する方法を教えてやるさ。まずは基本から理解していこう。
GASでメール内容を取得する方法
以下のスクリプトで、Gmailから特定の件名を持つメールを取得して、その内容をログに表示できる。
function getEmails() {
const threads = GmailApp.search('subject:重要');
const messages = GmailApp.getMessagesForThreads(threads);
for (let i = 0; i < messages.length; i++) {
for (let j = 0; j < messages[i].length; j++) {
Logger.log(messages[i][j].getSubject());
Logger.log(messages[i][j].getBody());
}
}
}
GmailApp.search()で条件にあったスレッドを取得し、
続いてGmailApp.getMessagesForThreads()で各スレッド内のメッセージを取得する。
getSubject()とgetBody()で件名と本文をログ表示する。
messages は 2次元配列になる点に注意な。
スレッド単位(i)→ メッセージ単位(j)
の2重ループで処理せねばならんのだ。
おお!こうやってメールの件名と本文を簡単に取得できるんですね!

猫男
練習問題
以下の条件に基づいて、メッセージの送信者のアドレスを取得して、ログに表示するスクリプトを作成せよ。
- 「catman」という単語が件名に含まれているメールを対象とする。
- スレッドごとにメッセージを確認し、送信者のアドレスを取得する。
- ログに送信者アドレスと件名を表示する。
練習問題の解答・解説
function getEmailSenders() {
const threads = GmailApp.search('subject:catman');
const messages = GmailApp.getMessagesForThreads(threads);
for (let i = 0; i < messages.length; i++) {
for (let j = 0; j < messages[i].length; j++) {
const sender = messages[i][j].getFrom();
const subject = messages[i][j].getSubject();
Logger.log('Sender: ' + sender);
Logger.log('Subject: ' + subject);
}
}
}
GmailApp.search()で特定の件名を持つスレッドを取得するところから始める。
GmailApp.getMessagesForThreads()で各スレッド内のメールを取り出す。
各メールからgetFrom()メソッドを呼び出して送信者のメールアドレスを取得するようにした。
最後にgetSubject()で件名も取得してログに出力させるんだ。