首页 > 解决方案 > 共享工作表时,其他用户不显示 Google Apps 脚本自定义工作表菜单

问题描述

我在 Google Apps 脚本编辑器中创建了一些基本的自定义菜单:

// Script has a library added under Resources -> Libraries -> [library1]  
function onOpen() {
      var ui = SpreadsheetApp.getUi();
      ui.createMenu('MyMenu').addItem('Refresh Data', 'refresh_the_data').addToUi();
    }

function refresh_the_data(){
  library1.refresh();
}

该菜单为我(开发人员)显示,但在我与其他用户共享工作表时不显示。

onOpen() 函数在“refresh_the_data”函数中使用外部库。以其他用户身份运行 onOpen() 时,我收到错误消息“您无权访问脚本使用的库 library1,或者它已被删除。”

所以我可以与所有需要访问此脚本的用户共享“library1”。有没有更好的方法与插件或应用程序共享脚本功能?理想情况下,我希望将库保持私有(不公开库的完整代码),尽管我知道如果我希望其他用户使用该功能,我必须公开代码。

标签: google-apps-script

解决方案


如果您授予库用户查看级别访问权限,则只有可枚举的全局属性对库用户可见。此外,您可以选择哪些方法对您的用户不可见/不可用,方法是用下划线结尾(例如myFunction_())。有关如何将某些方法和变量设置为私有的更多信息,请查看文档的最佳实践

此外,您还可以调整库 A 和 B 之间以及库 A 和脚本之间的资源范围。通过这种方式,您可以在 A 使用它的 A 和 B 之间共享资源,而无需授予您的用户对库 B 的读取级别访问权限。


推荐阅读