0

我怀疑这是一个简单的修复,但我的 Google App 脚本有问题,我已经阅读了许多帖子,这些帖子表明这些函数在自定义函数中已被弃用,但我不知道如何修复。

我有一个在使用 onOpen() 函数打开 Google Sheet 时自动运行的脚本。我试图在这个函数中移动 OpenByID() 方法,但得到了同样的错误。有人可以告诉我如何具体解决这个问题。

function onOpen(e) {
//function test(e) {
  // Add a custom menu to the spreadsheet.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var masterSheet=ss.getSheetByName(masterTab);

  for(var xLOSName = 3; xLOSName <= 4; xLOSName++) 
  {
    Logger.log('Attempting to open file');
    var fileId = masterSheet.getRange(xLOSName,2).getValue();
    Logger.log('Opening File ID: ' + fileId);
    var xLOSSpreadsheet  = SpreadsheetApp.openById(masterSheet.getRange(xLOSName,2).getValue());

    //var xLOSSpreadsheet  = SpreadsheetApp.openById(masterSheet.getRange(xLOSName,2).getValue()).getSheets()[0];
    Logger.log(xLOSSpreadsheet.getName());
  }

注意:它永远不会记录文件名。愚蠢的是,这在从调试器运行时有效。问候

4

2 回答 2

1

您不能在自定义函数中使用 SpreadsheetApp.openById()。它不仅被弃用,而且是不允许的。

自定义函数的限制

像 onOpen() 这样的简单触发器也不能执行需要权限的操作。

简单触发器限制

如果您需要需要权限的操作,则必须使用可安装的触发器。

于 2020-06-22T14:42:28.810 回答
0

您是否尝试过使用不同于 onOpen() 的自定义函数运行相同的代码?我遇到过类似的问题,最终限制在 onOpen() 和 onEdit() 函数上,我也在寻找 sintax 错误等......

于 2020-06-22T14:42:29.687 回答