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

猫男

catman
よし、catmanが「GASでメールの件名を取得する方法」を解説しよう!特別な力なんていらない、手順に従えば簡単にできるさ。
GASでメールの件名を取得する基本
GASとは、Google Apps Scriptの略称で、Gmailとの連携でメールの件名を取得するのは基本的なスクリプトだ。
まずは、GASのGmailAppサービスを使うことで、メールの件名を取得できる。
基本的なコードは以下の通りだ。
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件のスレッドを取得し、それぞれのメッセージについて件名をログに出力するものだ。
GmailApp.getInboxThreads()
まずはじめに、GmailApp.getInboxThreads()を使って、特定の範囲のスレッドを取得する必要がある。
このメソッドは、受信トレイのスレッドの配列を返す。
getSubject()
次に、getSubject()というメソッドを使って、そのスレッド内の各メールの件名を取得する。
この機能を使うことで、件名の情報をログに出力できる。
なるほど、メールのスレッドを取得して、そこから件名を取り出すんだね!

猫男
異なる条件でメールの件名を取得する
特定の条件でメールの件名を取得することもできる。
例えば、特定のラベルがついたメールのみを対象にすることも可能だ。
特定のラベルから件名を取得
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件のスレッドを取得し、それぞれのメッセージから件名を抽出するものだ。