earthpg:GAS専門のプログラミングスクール

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

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