驚くほど簡単!GASでメールの件名を取得する方法
GASでメールの件名を取得したいんだけど、どうやれば良いのか見当もつかなくて…

猫男

catman
よし、catmanが「GASでメールの件名を取得する方法」を解説しよう!
GASでメールの件名を取得する基本的な方法
基本的なコードは以下の通りだ。
function getEmails() {
var threads = GmailApp.getInboxThreads(0, 10);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
Logger.log(messages[j].getSubject());
}
}
}
このスクリプトは、受信トレイから最初の10件のスレッドを取得し、それぞれのメッセージについて件名をログに出力するものだ。
スレッドとは、Gmail内でやり取りされた関連メールのまとまりのこと。初回メール送信から、それに対する返信までが1スレッドとしてカウントされます。
GmailApp.getInboxThreads()
まずはじめに、GmailApp.getInboxThreads()を使って、特定の範囲のスレッドを取得する必要がある。
このメソッドは、受信トレイのスレッドの配列を返す。
getSubject()
次に、getSubject()というメソッドを使って、そのスレッド内の各メールの件名を取得する。
この機能を使うことで、件名の情報をログに出力できる。
なるほど、メールのスレッドを取得して、そこから件名を取り出すんだね!

猫男
GASで特定の条件にてメールの件名を取得する方法
GASを使えば、特定の条件でメールの件名を取得できる。
例えば、特定のラベルがついたメールのみを対象にできるぞ。
function getLabeledEmails() {
var label = GmailApp.getUserLabelByName('仕事');
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
Logger.log(messages[j].getSubject());
}
}
}
このスクリプトでは、『仕事』というラベルがついたすべてのスレッドを取得。
その中のすべてのメール件名をログに出力している。
ワクワクするなぁ、特定のラベルからメールの件名を取得するのも簡単なんだね!

猫男
練習問題
1. GASで特定のキーワード『招待』が含まれるメールの件名を取得するスクリプトを書いてみよう。
2. 受信トレイの最初の5件のみ適用されるスクリプトを書いてみよう。
解答と解説
function getKeywordEmails() {
var threads = GmailApp.search('subject:招待');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
Logger.log(messages[j].getSubject());
}
}
}
このスクリプトは、件名に『招待』が含まれるメールのスレッドを検索し、各メールの件名を取得する。
GmailApp.search()を使うことで、特定のキーワードを含むメールを取得する方法を実践している。
function getTopEmails() {
var threads = GmailApp.getInboxThreads(0, 5);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
Logger.log(messages[j].getSubject());
}
}
}
こちらのスクリプトは、受信トレイの最初の5件のスレッドを取得し、それぞれのメッセージから件名を抽出するものだ。