Google apps script 自定义函数不断抛出错误

Google apps script 自定义函数不断抛出错误,google-apps-script,google-sheets,google-sheets-formula,custom-function,Google Apps Script,Google Sheets,Google Sheets Formula,Custom Function,我编写了一个自定义的单元内函数,用于仅当给定的单元不为空时才具有指定的数据验证列表。以下是该函数: function CONDITIONALVALIDATION(sheetName,cellToCheckA1,validationCell,validationItems){ var ss = SpreadsheetApp.getActive(); var sheet = ss.getSheetByName(sheetName); var cellValue = sheet.getRa

我编写了一个自定义的单元内函数,用于仅当给定的单元不为空时才具有指定的数据验证列表。以下是该函数:

function CONDITIONALVALIDATION(sheetName,cellToCheckA1,validationCell,validationItems){
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName(sheetName);
  var cellValue = sheet.getRange(cellToCheckA1).getValue();
  var cellToSet = sheet.getRange(validationCell);
  cellToSet.clearDataValidations();
  if(cellValue!=""){
  var unitsRule = SpreadsheetApp.newDataValidation().requireValueInList(validationItems, true);
    cellToSet.setDataValidation(unitsRule)
  }
}
当我调用一个测试函数来填充CONDITIONALVALIDATION函数的参数并在编辑器中运行它时,我看到了期望的结果。该功能如下所示:

function testconditional(){
  CONDITIONALVALIDATION("Front End","E12","F12",["x","y"]);
}
但是,当我将该函数作为自定义的单元内函数调用时,我经常会得到一个

“公式分析错误。”

我已经排除了语法可能的原因;在测试函数中对函数的调用与在自定义单元内函数中调用时完全相同。当然,在函数调用之前保存等号,以指示它是要运行的函数。我还知道,功能是由图纸识别的;在单元格内调用函数时,不存在“函数不存在”或“名称?”错误

如何解决此问题?

问题: Javascript数组文字
[]
不是有效的电子表格公式语法。请改为尝试
{}

=CONDITIONALVALIDATION("Front End","E12","F12",{"x","y"});
尽管如此,如文档中所述,自定义函数不能

电子表格

只读(可以使用大多数get*()方法,但不能使用set*())

解决方案: 要使用上述服务以外的服务,请创建一个运行应用程序脚本函数的自定义菜单,而不是编写自定义函数。从菜单触发的功能将在必要时请求用户授权,从而可以使用所有应用程序脚本服务

问题: Javascript数组文字
[]
不是有效的电子表格公式语法。请改为尝试
{}

=CONDITIONALVALIDATION("Front End","E12","F12",{"x","y"});
尽管如此,如文档中所述,自定义函数不能

电子表格

只读(可以使用大多数get*()方法,但不能使用set*())

解决方案: 要使用上述服务以外的服务,请创建一个运行应用程序脚本函数的自定义菜单,而不是编写自定义函数。从菜单触发的功能将在必要时请求用户授权,从而可以使用所有应用程序脚本服务


Google应用程序脚本自定义函数无法对对象(电子表格、工作表、范围等)进行更改。它们只能返回一个值或一个值数组

参考文献

关于公式解析错误消息,当公式有一些“常规公式语法检查器”无法捕获的语法错误时,会发生此错误,例如数组上有语法错误


如前所述,另一种选择是使用自定义菜单。通常不提及编辑时触发器,因为当公式的结果更改时不会触发它们,但在某些情况下可能会起作用,例如当使用的编辑单元格时预期会发生更改。

谷歌应用程序脚本自定义函数无法对对象(电子表格、工作表、范围等)进行更改。它们只能返回一个值或一个值数组

参考文献

关于公式解析错误消息,当公式有一些“常规公式语法检查器”无法捕获的语法错误时,会发生此错误,例如数组上有语法错误


如前所述,另一种选择是使用自定义菜单。通常不提及编辑时触发器,因为当公式的结果更改时不会触发它们,但在某些情况下可能会起作用,例如当使用编辑单元格时预期会进行更改。

我将使用建议的备选方案。谢谢我将使用建议的替代方案。谢谢