【问题标题】:Custom Functions with add-ons?带有附加组件的自定义功能?
【发布时间】:2015-06-16 21:09:08
【问题描述】:

我一直在尝试从我拥有的一些现有 Google 应用脚本创建一个 Google 电子表格插件,该应用脚本的一个重要部分是自定义函数。

尽管附加组件的文档并未表明支持此功能,但自定义功能的文档确实表明您可以。

https://developers.google.com/apps-script/guides/sheets/functions

通过测试,我曾经无法通过插件公开自定义函数。有谁知道让它发挥作用的秘诀吗?

【问题讨论】:

  • 很奇怪。我可以让一些自定义函数在插件中工作,但不能在其他插件中工作。实验:使用编辑器中“自定义函数”示例中的代码创建独立脚本。节省。使用任何现有电子表格作为插件进行测试。 SAY_HELLO() 不起作用,但脚本中的所有其他功能都可以。我尝试改变功能的顺序,没有改变。在插件中添加了其他功能,它们也不起作用。将INCREMENT 重命名为PIZZA,它仍然作为INCREMENT 工作,但不是PIZZA。这里出了点问题。

标签: google-apps-script google-sheets google-apps-script-addon google-sheets-custom-function


【解决方案1】:

回答

根据 [Code.gs - date_add_and_subtract](https://github.com/google/google-apps-script-samples/blob/master/date_add_and_subtract/Code.gs) 中的 Eric Koleda 所述,要使插件中的自定义功能可用,需要至少包含一个插件菜单,但这不适用于此测试模式的时间。

注意:最初引用的页面已被删除,但日期加减插件示例代码可在 https://github.com/googlesamples/apps-script/tree/master/sheets/dateAddAndSubtract 获得。

测试自定义功能插件的“解决方案”是私下发布插件,这样您就可以避免 Google 审查未经测试的插件。相关问答:Publish an add-on privately


笔记:
  1. 您必须创建一个 Google Cloud 项目,设置 OAuth 同意屏幕,添加 Google Workspaces Marketplace SDK,完成配置页面、列表页面并发布插件
  2. 设置 OAuth 同意屏幕供内部使用需要 Google Workspace 帐户
  3. 将 OAuth 同意屏幕设置为仅限于测试帐户的外部使用不允许将插件发布到 GW Marketplace。

一种情况是使用不同的 Google Cloud 项目进行测试和生产,但使用相同的 Google Apps 脚本项目。另一种情况是有两个不同的 Google Apps 脚本项目,每个项目都有自己的 Google Apps 项目,并以某种方式将代码从一个复制到另一个,即使用 Google Apps Script GitHub Assistant Chrome Extension、CLASP 或 Google Apps Script API。

备注

有几个相关的 GAS 问题,请给它们加星标:

【讨论】:

  • 我尝试了 date_add_subtract 并且该插件正在工作。此外,我尝试创建自己的自定义函数并且它们正在工作。与 date_add_subtract 链接代码相同,我在插件中添加了一个菜单,除了显示警报之外,它基本上什么都不做。然后,一旦您单击该菜单,之后自定义公式就会出现在智能感知中并开始工作。用于安装配置的身份验证模式是“已安装并启用”。
  • 不确定这是否是新的限制,但 Google 声明“警告:一旦您在发布过程中保存了可见性选项,您以后将无法更改您的选择。请确保您知道您的可见性开始发布过程之前的附加需求”(source)。我想这意味着如果您将附加组件发布为私有,则必须创建一个新项目才能将其发布为公开。
  • @thdoan 是的,这是一个相对较新的限制,您的猜测是正确的,更具体地说,是一个新的 GCP,Google Apps 脚本项目可能是相同的。
  • 有人找到解决方案了吗?我找不到使用插件的测试部署使其工作的方法。
  • @M4hd1 相关问题仍然存在,所以解决方法是,正如答案中已经提到的,发布附加组件(PS:我更新了我的答案)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 2016-12-30
  • 2016-10-26
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
相关资源
最近更新 更多