我在创建一个每晚都会运行的Google脚本时遇到问题。当我从脚本文件运行它并且按预期运行时,代码运行正常,但是当由安装的触发器执行时,我得到以下内容:
TypeError:无法读取属性"长度"来自undefined。 (第17行,文件"主要")
编辑: 要清楚我知道所使用的特定查询必须返回结果,因为从脚本编辑器运行相同的脚本可以正常工作
代码:
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方法message.list()的一个问题
提前感谢您的帮助!
我成功解决了这个问题。问题是我想留下一个选项来传递函数调用的查询。问题是,安装的触发器实际上将一个变量传递给查询变量,然后没有设置新的触发器。
答案 0 :(得分:1)
我认为它比这简单得多。如果我在最后一天列出消息,我会得到:
请求:强>
GET https://www.googleapis.com/gmail/v1/users/me/messages?q=newer_than%3A1d
<强>响应:强>
{
"messages": [
{
"id": "150612f9d7f83db9",
"threadId": "150611d4e92b7a5f"
}, ...
]
}
如果我在最后一秒列出消息,我会得到:
请求:强>
GET https://www.googleapis.com/gmail/v1/users/me/messages?q=newer_than%3A1s
<强>响应:强>
{
"resultSizeEstimate": 0
}
换句话说,如果您没有收到该特定查询的消息,则queriedMessages.messages
将为undefined
,而queriedMessages.messages.length
会引发您的错误。