0
今天,我无法运行连接到特定Google Spreadsheet的脚本,该Spreadsheet包含.next()
函数调用,我使用它来按名称访问其他Spreadsheets。它显示运行脚本取消关闭电子表格顶部的消息,直到超过最大执行时间。奇怪的是我每天都有类似的文件,而且脚本完全一样,昨天的文件工作正常。我在下面创建了MWE。所以,当我运行它时,我可以得到前2条消息的警报,但不是第3条。为什么Google Apps脚本在调用next()函数时挂起
function test_script_hanging() {
var ui = SpreadsheetApp.getUi();
ui.alert("before getting files by name");
var getFilefile = DriveApp.getFilesByName("file");
ui.alert("after getting files by name");
var getID = getFilefile.next().getId();
ui.alert("after getting Id");
}
在某些情况下,我注意到一个错误信息,说什么“需要授权才能执行此操作”上,其中.next()
函数被调用就行了。我试图撤消对该文件的授权并再次授权,但这并没有帮助。我试图给予完全访问给定的脚本,但无法谷歌的方式来做到这一点。 也许我可以在我的脚本中添加一些更多的功能,以在授权期间要求完全访问,也许这将有助于运行我的主要功能。 我的问题是:
- 为什么脚本挂起?
- 如何解决这个问题?
- 这样的事情(随机且没有任何通知)是否可以在Google帐户的免费版本中发生?
尝试Cooper的解决方案。 getFilesByName()方法返回一个FileIterator,然后调用next()方法。如果迭代器已经结束,调用next()将会抛出异常并停止脚本。您必须通过在while循环中使用hasNext()来检查迭代器是否已达到最终结果 –
本期的第二天,所有内容都开始像以前一样工作,没有任何更改。可能这是Google网站上的一些问题/错误。而且我没有机会检查任何回复。 @AntonDementiev谢谢你的回答,我知道你在说什么,但是我确定我的迭代器没有达到,因为我在驱动器中创建了名称为“file”的文件,并且它没有抛出任何例外情况,它只是挂起而没有任何类型的错误消息,无论我在哪里从工作表本身或脚本编辑器运行脚本。 – eRic