驚くほど簡単!GASでメールの件名を取得する方法

GASでメールの件名を取得したいんだけど、どうやれば良いのか見当もつかなくて…
猫男
猫男
catman
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件のスレッドを取得し、それぞれのメッセージから件名を抽出するものだ。