使用独立插件向 Google 表格添加自定义功能

Adding custom functions to Google Sheets using a standalone add-on

我有一堆 Google Sheet 的自定义函数,我目前将它们复制粘贴为容器绑定脚本。我想打包成一个独立的附加组件。但是,当我制作一个独立的 Apps 脚本项目并部署它(通过 Deploy > Test Deployments > Test latest code > Install 菜单选项)时,虽然确实安装了附加组件(例如,我在工作表中看到了它的图标),但它并没有注册我的任何自定义函数。如何制作一个独立的 Apps 脚本项目,在安装它的电子表格中注册自定义函数?

This question 是相关的,但我认为那里的讨论不适用。特别是,该答案表明脚本必须添加一些自定义菜单项,大概使用

这样的代码
function onOpen() {
  SpreadsheetApp.getUi().createMenu('My Extension')
    .addItem('Enable', 'doNothing')
    .addToUi();
}

function doNothing() {
}

因为 Unexplained Reasons™,直到用户通过此类菜单项或其他方式与脚本交互后,自定义功能才会被注册。然而,这个答案是几年前的,而且似乎不起作用。

特别是,当我尝试这样做时,我的独立脚本甚至没有成功添加 Enable 菜单项。我做了一些探索,并提出了一个假设,即我应该添加某种“触发器”,告诉 Google 到 运行 onOpen 函数,只要用户打开电子表格,实际上我可以在容器绑定脚本中执行此操作(通过 Triggers > Add Trigger > Select event source: From spreadsheet 路径),但我的独立脚本没有 From spreadsheet 作为可用的 event source,因此我什至不确定如何在独立脚本中将我的菜单添加功能添加到 运行 onOpen。也就是说,我什至不知道如何直接添加用户可以与之交互的菜单项以尝试加载自定义功能。

然而,我能够转到清单文件并配置 addOns.common.homepageTrigger.runFunction,并命名一个生成 Card 的函数,该函数包含一个按钮,按下该按钮时会添加一个菜单项,在希望无论是按下按钮,还是未能与添加的菜单项进行交互,都会说服 Google 是时候加载自定义功能了。

但是:没有骰子。 homepageTrigger 有效(生成带有按钮的卡片),按钮有效(通过添加新菜单项),新菜单项有效(通过尽职地调用 doNothing),但是 none 这导致自定义函数在 Sheet 中可用。这表明我并没有完全无法获取我的脚本 运行ning(它确实已安装,并且对我有响应,例如,更改按钮文本,表明我不只是停留在旧版本上或w/e),并且上面链接的相关问题不适用于我的情况。

而且,不言而喻,我的代码作为容器绑定脚本运行良好,所以我非常有信心我没有搞砸添加自定义函数的基础知识(并使用 @customfunction 在 jsdocs 中)。那么,那么,我是否可以通过独立的 Apps 脚本插件在 Google Sheet 中注册自定义函数?

问题:

解决方案:

你必须 publish the editor add-on 才能正常工作。