首页 > 解决方案 > 如何从插件加载 Google Apps 脚本 UDF 以在 Google 表格中使用?

问题描述

我正在开发一个带有大量电子表格功能的插件。这些已分为许多不同的部分,并已存储在加载项文件树中的不同文件中。我想到了一个带有复选框的菜单系统,将它们捆绑在一起,以便一个可以加载一个但不能加载另一个,或者一个和多个其他的。

这就是想法。这个问题是,如何实际实现这一目标?您如何对 Sheets(或控制此类事情的任何子系统)说:“嘿,看到这个 .gs 文件充满了功能?加载它!”?

与此相关的是进一步的改进,如果可以实现的话,这将是很酷的,能够卸载一个函数块,也就是说,“嘿,看到这个文件充满了你 20 分钟前加载的函数吗?卸载他们!”

那么有没有一种从插件加载 UDF 的机制呢?或者这是我们将在 Google Apps Script v6 中看到的东西?

标签: google-apps-scriptgoogle-sheetsuser-defined-functionscustom-functiongoogle-apps-script-addon

解决方案


在 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


推荐阅读