google-apps-script - 如何从插件加载 Google Apps 脚本 UDF 以在 Google 表格中使用?
问题描述
我正在开发一个带有大量电子表格功能的插件。这些已分为许多不同的部分,并已存储在加载项文件树中的不同文件中。我想到了一个带有复选框的菜单系统,将它们捆绑在一起,以便一个可以加载一个但不能加载另一个,或者一个和多个其他的。
这就是想法。这个问题是,如何实际实现这一目标?您如何对 Sheets(或控制此类事情的任何子系统)说:“嘿,看到这个 .gs 文件充满了功能?加载它!”?
与此相关的是进一步的改进,如果可以实现的话,这将是很酷的,能够卸载一个函数块,也就是说,“嘿,看到这个文件充满了你 20 分钟前加载的函数吗?卸载他们!”
那么有没有一种从插件加载 UDF 的机制呢?或者这是我们将在 Google Apps Script v6 中看到的东西?
解决方案
在 Google 表格术语中,UDF 称为自定义函数。
在 Google 文档编辑器(文档、表格、幻灯片)上,自定义菜单不能包含真正的复选框,但您可以创建带有图标或字符的“动态菜单”,以显示打开/关闭的功能或使用 HTML 服务对话框或侧边栏使用真正的复选框。
自定义函数是在全局范围内定义的,所以它们一直都是公共函数。您可以通过使用少量自定义函数作为“私有自定义函数”的网关来避免将“所有自定义函数”作为“公共自定义函数”。类似于以下内容:
function myCustomFunction(choosen){
var localfunctions = {
a:function localfunction1(){ return 'one result'},
b:function localfunction2(){ return 'another result'}
}
return localfunctions[choosen]()
}
真正的私有函数有下划线作为函数名的最后一个字符。您的“公共自定义函数”可以调用它们而不是使用本地函数。
另一种选择是将您的自定义函数放在外部项目上并将其作为 API 启用。有关将 Apps 脚本项目启用为 API 的详细信息,请参阅https://developers.google.com/apps-script/api/how-tos/execute#step_1_deploy_the_script_as_an_api_executable
推荐阅读
- wordpress - 如何在不停机的情况下在 wordpress 中处理新主题
- python - 给定一个 [string, number] 元组列表,创建一个字典,其中键是字符串的第一个字符,值是数字的总和
- firebase - 我可以在不需要令牌的情况下公开 firebase 文件 URL 吗?
- c++ - NRVO 是否发生在静态成员变量初始化中?
- javascript - NodeJS:本地主机不断加载
- c - 在 Linux 上运行的遗留 C 代码中的奇怪行
- typescript - TypeScript 中具有区分联合的类型安全强制转换(如 C++ 的 dynamic_cast)
- java - Android Studio 播放和录制音频错误。“无法解析 Sybmol”和“无法解析方法”
- flutter - 无法让 Flutter 在 VS Code 中以调试模式运行
- amazon-web-services - 从不同环境中的配置文件上传到 AWS S3 存储桶