件名や本文、差し出し人などのデータを取得することができます。
まずは最新の2件の件名を取得してメッセージボックスに表示するということをやって、次にその2件の件名をシートに書き出すということをやってみました。
最後にラベルを指定して最新の2件をシートに書き出すということもやってみました。
スレッドに複数のメッセージがある場合は、それらも取得できるようにしています。
1. 最新の2件の件名をメッセージボックスに表示します
コード.gs
function getMail_subject() { var thread = GmailApp.getInboxThreads(0, 2); var messages = GmailApp.getMessagesForThreads(thread); for (var i = 0; i < thread.length; i++) { for (var j = 0; j < messages[i].length; j++) { var subject = messages[i][j].getSubject(); Browser.msgBox(subject); } } }
実行すると最新のメールから1件ずつメッセージボックスに表示されます。
以下の例はこのコードを書いた時点での僕のGmailにあった最新2件の件名です。
まず最新の1件が表示されます。
OKをクリックすると次の1件が表示されます。
2. 最新の2件の件名をシートに書き出します
ここでは書き出すシート名を「シート1」としています。
コード.gs
function getMail_subject_write() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName("シート1"); //sheet_name var threads = GmailApp.getInboxThreads(0, 2); var messages = GmailApp.getMessagesForThreads(threads); var row = sh.getRange("A:A").getValues().filter(String).length + 1; for (var i = 0; i < threads.length; i++) { for (var j = 0; j < messages[i].length; j++) { var subject = messages[i][j].getSubject(); sh.getRange(row, 1).setValue(subject); row++; } } }
実行すると、最新の2件の件名がシート1のA列に書き出されます。
3. ラベルを指定して最新の2件をシートに書き出します
LABEL名に指定したいラベル名を入力します。
コード.gs
function getMail_by_label() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName("シート1"); var label = GmailApp.getUserLabelByName("LABEL名"); //label_name var threads = label.getThreads(0, 2); var messages = GmailApp.getMessagesForThreads(threads); var row = sh.getRange("A:A").getValues().filter(String).length + 1; for (var i = 0; i < threads.length; i++) { for (var j = 0; j < messages[i].length; j++) { var subject = messages[i][j].getSubject(); sh.getRange(row, 1).setValue(subject); row++; } } }
実行すると、指定したラベルの最新の2件の件名がシート1のA列に書き出されます。
おまけ
ここでは件名だけを取得しましたが、本文はgetBody()、差し出し人はgetFrom()で取得できます。
その他取得したい情報については公式サイトを御覧ください。
Class GmailMessage
https://developers.google.com/apps-script/reference/gmail/gmail-message#methods