このGoogleスクリプトは、Gmailで「LabelToGet」というラベルのメールを検索し、これらのメールで作成されたスプレッドシートへのリンクを送信します。
function createAndSendDocument() {
// Create a new document with the title 'Email Contacts'
var doc = SpreadsheetApp.create('My Contacts');
var sh = doc.insertSheet('Emails', 0);
// get all messages
var eMails = GmailApp.getMessagesForThreads(
GmailApp.search("label:LabelToGet"))
.reduce(function(a, b) {return a.concat(b);})
.map(function(eMails) {
return eMails.getFrom()
});
// sort and filter for unique entries
var aEmails = eMails.sort().filter(function(el,j,a){if(j==a.indexOf(el))return 1;return 0});
// create 2D-array
var aUnique = new Array();
for(var k in aEmails) {
aUnique.Push([aEmails[k]]);
}
// add data to sheet
sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
// Get the URL of the document
var url = doc.getUrl();
// Get the email address of the active user - that's you
var emailAddress = Session.getActiveUser().getEmail();
// Send yourself an email with a link to the document
GmailApp.sendEmail(emailAddress,
'Heres the link to it',
'click here: ' + url);
}
うまくいきますが、このラベルには何千通ものメールがあり、スクリプトは最新の500件までしか実行されていないようです。
このラベルのすべての電子メールを閲覧しない原因となるもの、またはそれを実現するために私ができることを誰かが知っていますか?
Gmail.searchは最初の数百件のメールのみを返します。後のメッセージを取得する場合は、offsetパラメーターを指定する必要があります。
以前に Gmailフォルダーからメールアドレスを抽出する 用のGoogleスクリプトを作成しましたが、以前のメッセージでも同様に機能します。