为什么Google Apps脚本会在调用next()函数

时间:2017-08-24 20:21:45

标签: google-apps-script google-sheets

今天我无法运行连接到包含.next()函数调用的特定Google电子表格的脚本,我用它来按名称访问其他电子表格。它会在电子表格顶部显示运行脚本取消关闭消息,直到超过最长执行时间。奇怪的是,我每天都有类似的文件与完全相同的脚本,而昨天的文件工作正常。我在下面创建了MWE。因此,当我运行它时,我可以获得前2条消息的警报,但不能获得第3条消息。

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的方式来执行此操作。 也许我可以在我的脚本中添加更多功能,以便在授权期间要求完全访问,这可能有助于运行我的主要功能。 我的问题是:

  1. 为什么脚本会挂起?
  2. 如何解决这个问题?
  3. 可以在免费版Google帐户中发生此类事情(随机且无任何通知)吗?

1 个答案:

答案 0 :(得分:1)

这对我有用:

  var fldr = DriveApp.getFolderById(folderID)
  var file = fldr.getFilesByName(filename);
  while(file.hasNext())
  {
    var fi = file.next();
    if(fi.getName() == filename)
    {
      var id=fi.getId();
    }
  }