我在创建每天晚上都会运行的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