我正在嘗試為自動回復功能創建一個腳本。我目前正在嘗試獲取分配給特定標簽的每封電子郵件并從每封電子郵件中獲取特定詳細資訊,但是我收到一條錯誤訊息,指出 TypeError:threads.getMessages is not a function,即使我已經三次檢查這是,確實是 GMAIL 腳本的一個功能。我在這段代碼中做錯了什么可能導致這個錯誤嗎?
var labelName = "auto-reply-incoming";
var receivedCount = 0;
// extract emails from label in Gmail
function extractEmails() {
// get all email threads that match label
var receivedSearchQuery = "label:" labelName " -is:sent";
var threads = GmailApp.search(receivedSearchQuery, 0, 500);
for (var i=0; i<threads.length; i ) {
//count received emails in label
receivedCount = receivedCount threads[i].getMessageCount();
//get body of each email
var message = threads.getMessages()[i].getBody();
//get recipient of each email
var recipient = threads.getMessages()[i].getTo();
}
Logger.log(receivedCount);
Logger.log(recipient);
}
uj5u.com熱心網友回復:
出現問題是因為代碼使用的執行緒迭代器可能大于某些執行緒上的訊息數,更具體地說,問題出在以下幾行:
//get body of each email
var message = threads.getMessages()[i].getBody();
//get recipient of each email
var recipient = threads.getMessages()[i].getTo();
這是一個快速修復(將上面的替換為以下)
var messages = threads[i].getMessages();
for( j = 0; j < messages.length; j ){
//get body of each email
var message = messages[j].getBody();
//get recipient of each email
var recipient = messages[j].getTo();
}
注意:Logger.log(recipient)將記錄最后一個執行緒的最后一條訊息的收件人。
uj5u.com熱心網友回復:
嘗試這個:
function extractEmails() {
var labelName = "auto-reply-incoming";
var receivedCount = 0;
var receivedSearchQuery = "label:" labelName " -is:sent";
var ts = GmailApp.search(receivedSearchQuery, 0, 500);
var a = [];
ts.forEach((t, i) => {
let ms = t.getMessages();
ms.forEach((m, j) => {
let msg = m.getBody();
let rec = m.getTo();
a.push({ threadindex: j, messageindex: i, message: msg, recipient: rec })
});
});
Logger.log(JSON.stringify(a));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490223.html
標籤:javascript 谷歌应用脚本 邮箱
上一篇:計算著色器浮點運算確實不準確
