【问题标题】:Calling custom function directly from Google Sheets直接从 Google 表格调用自定义函数
【发布时间】:2019-10-10 08:59:27
【问题描述】:

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

喜欢

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

我对这些类型的问题进行了很多研究,特别是在 Stack Overflow 上检查了类似的问题。有人说在项目属性中添加范围(我的项目已经有所需的范围),有人说要从菜单或按钮调用自定义函数

但我的要求是从单元格中调用 Google 表格中的自定义函数。

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

我遇到了麻烦,我没有找到任何解决方案。

请提出解决此问题的可能方法。

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

引发错误“您无权调用 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);
}

【问题讨论】:

  • 你能发布你的脚本 sn-p 吗? (不起作用的那个)某些功能比其他功能需要更多的权限
  • 我刚刚添加了一个从命名范围创建下拉列表的代码 sn-p。它在谷歌应用程序脚本编辑器中运行良好,但是当我试图从工作表中调用它时它不起作用。
  • 自定义函数必须返回一个值。您应该阅读自定义函数的限制here 此外,自定义函数不能更改其他单元格。
  • 我想在调用公式的同一单元格中设置验证(从命名范围下拉)。我怎么能这样做?

标签: google-apps-script google-sheets


【解决方案1】:

自定义函数限制

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多