我在創建每天晚上都會運行的Google腳本時遇到了問題。該代碼運行正常,當我從腳本文件運行它,並按照我們的期望,但通過安裝的觸發器執行時,我得到如下:來自trigger的Gmail API message.list
TypeError: Cannot read property "length" from undefined. (line 17, file "Main")
編輯:要清楚我知道的特定查詢採用了返回結果從腳本編輯器中運行相同的腳本工作正常
代碼:
function doGet(query) {
var sSheet = sheetSelect(), //calls spreadsheet selection function and assigns the spreadsheet to variable
queriedMessages, //object to store the queried messages list
pageToken, //string token value that will be pulled from the queredMessages
auth = 'me';
if (!query) query = 'in:all newer_than:1d -is:chats -in:trash';
do {
queriedMessages = Gmail.Users.Messages.list(auth, {'q':query, 'pageToken':pageToken}); //callls the Gmail API to query messages
dataOutput(sSheet, queriedMessages.messages, queriedMessages.messages.length); //calls function to output all data to spreadsheet from the current list
pageToken = queriedMessages.nextPageToken; //gets the next page token from the list
}
while (pageToken); //the loop is executed until there are no more next page tokens left
}
任何想法,爲什麼它表現如此不同?我曾嘗試爲特定的電子郵件提供userId。似乎這可能是某種身份驗證問題,但我無法弄清楚如何解決它,而不是忘記Gmail API,並採用迂迴的方式使用Gmail應用程序,因爲它似乎是Gmail API方法的一個問題messages.list()
感謝您提前給予任何幫助!
我設法解決了這個問題。問題是我想留下一個選項來傳遞一個帶有函數調用的查詢。接下來的問題是,安裝的觸發器實際上將變量傳遞給查詢變量,然後未設置新變量。
但是,該特定的查詢應該返回消息。我試圖從編輯器運行腳本,然後稍後觸發。當通過觸發器運行時,它不會返回任何內容,但是從編輯器運行時它將返回63條消息。 似乎觸發器不會以用戶的身份運行應用程序,或者如果我指定了電子郵件而不是使用「我」標識符,則沒有身份驗證來查看用戶的電子郵件 – Vytautas