通过onOpen命令运行时SpreadsheetApp.openById显示错误

时间:2020-06-22 13:14:34

标签: google-apps-script google-sheets triggers google-sheets-custom-function

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

我有一个脚本,当使用onOpen()函数打开Goog​​le表格时,该脚本会自动运行。我试图在此函数内移动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());
  }

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

2 个答案:

答案 0 :(得分:1)

不能在自定义函数中使用SpreadsheetApp.openById()。不只是弃用它是不允许的。

Restrictions on Custom Functions

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

Simple Triggers Restrictions

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

答案 1 :(得分:0)

您是否尝试过使用与onOpen()不同的自定义函数来运行相同的代码? 我遇到了类似的问题,这些问题最终限制了onOpen()和onEdit()函数,而且我还在寻找sintax错误,例如...