直接从Google表格调用自定义函数

时间:2019-05-23 18:32:27

标签: google-apps-script google-sheets spreadsheet

如何解决自定义功能(从Google表格单元格调用)的权限问题?

喜欢

  • “您无权调用 setDataValidation
  • “您无权调用 setValue

我对这些类型的问题进行了很多研究,尤其是检查了StackOverflow上的类似问题

有人说在项目属性中添加范围(我的项目已具有必需的范围),有人说从菜单或按钮调用自定义功能

  

但是我需要从Google表格调用自定义功能   从单元格中获取。

然后,我将与我的组织( Gsuite )共享该工作表,以便他们可以访问数据和自定义功能。

我遇到了麻烦,没有找到任何解决方案。 请提出纠正此问题的可行方法。

*我可以轻松地直接从Google App脚本(运行)调用这些函数,而不能从工作表调用这些函数。

  

引发错误的示例代码“您无权调用   setDataValidation”

function getNamedRanges(type,cell){  // parms ex. ("Cars" ,"D1")
  Logger.log(type);
    var namedRanges = SpreadsheetApp.getActive().getNamedRanges();
    for (var i = 0; i < namedRanges.length; i++) {
      if(namedRanges[i].getName()==type){
        var cell = SpreadsheetApp.getActive().getRange(cell)
         createDropdownForRange(namedRanges[i].getRange(),cell);
      }
    }

}


function createDropdownForRange(namedRange,cell){
   var rule = SpreadsheetApp
   .newDataValidation()
   .requireValueInRange(namedRange,true);   
  cell.setDataValidation(rule);
}

1 个答案:

答案 0 :(得分:0)

自定义功能限制

每个自定义函数都必须返回一个要显示的值,例如:

如果自定义函数返回一个值,则该值将显示在调用该函数的单元格中。 如果自定义函数返回二维值数组,则只要相邻单元格为空,这些值就会溢出到相邻单元格中。如果这将导致数组覆盖现有的单元格内容,则自定义函数将引发错误。有关示例,请参见有关优化自定义功能的部分。 自定义函数不能影响返回值的单元格。换句话说,自定义函数不能编辑任意单元格,只能编辑从其调用的单元格及其相邻单元格。要编辑任意单元格,请改用自定义菜单运行函数。 自定义函数调用必须在30秒内返回。如果不是,则该单元将显示错误:内部错误,执行自定义功能。