私は 1 か月ほど GAS をいじっており、バッチ操作を使用してスプレッドシートを読み書きすることにかなり慣れてきました (getValues()、setValues() など)。ただし、現在、クラス GmailApp を使用して Gmail からかなりの量のデータを引き出すスクリプトを作成しています。コードの実行が非常に遅く (タイムアウトすることさえあります)、バッチ操作の使用方法がわかりません。私がやろうとしていることのために。これまでのコードは次のとおりです(メールアドレスと名前が変更されています):
function fetchEmails(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var threads = GmailApp.search('in: label:searchedLabel');
var messages = new Array();
function Email(message){
this.date = new Date(message.getDate());
this.body = message.getBody();
}
for(var i=0;i<threads.length;i++){
for(var j=0;j<threads[i].getMessageCount();j++){
if(threads[i].getMessages()[j].getFrom()=="firstName lastName <email@domain.com>"){
var message = new Email(threads[i].getMessages()[j]);
messages.push(message);
}
}
}
}
ご覧のとおり、指定されたラベルを持つすべてのスレッドについてメールをクエリし、カスタム Email オブジェクト (メールの本文と日付をプロパティとして持つ) のオブジェクト コンストラクターを作成しています。次に、各スレッドをループして、特定のメールが探している送信者と一致する場合、そのメールの Email オブジェクトのインスタンスを作成し、その Email オブジェクトを配列に配置します。目標は、最終的に、目的の送信者からのすべての Email オブジェクトの配列を取得することです。しかし、お気づきかもしれませんが、コードが Google の API をあまりにも頻繁に呼び出していることに気付いたかもしれませんが、Gmail とやり取りするためのバッチ操作を理解できないようです。何か案は?本当にありがとう。