问题标签 [google-workspace-add-ons]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
25 浏览

html - Google 幻灯片插件中的键盘快捷键

我正在为 Google 幻灯片创建一个插件。我的插件由 HTML 中的一个按钮组成。除了让用户单击按钮(对幻灯片执行操作)之外,是否可以创建一个键盘快捷键来自动单击按钮或“调用”脚本函数?

0 投票
0 回答
13 浏览

gmail - GMAIL 插件之间的通信

我正在为 GMAIL 编写一个 Apps Script 插件,我想知道是否有任何方法可以让两个单独的插件相互通信?我已经阅读了所有文档,但找不到任何参考。

谢谢!

0 投票
1 回答
72 浏览

google-apps-script - 是否有一种简单或自动化的方法可以知道我的 Google Workspace 插件是否会触发安全评估?

我计划在 Google Workspace 市场中创建并向公众发布 Google 表格插件。据我所知,对于某些使用受限范围的附加组件,Google 要求对附加组件进行第三方安全评估/审核。处理审计的成本在 15,000 美元至 75,000 美元和数周之间。我不打算支付这笔巨额费用,特别是如果附加组件是免费的。

附加组件是否需要安全评估的文档和情况对我来说还不够清楚。例如,当插件用户单击按钮以获取它们的列表时获取 Gmail 草稿列表。

在我花时间创建一个完整的插件之前,有没有办法向谷歌提交一个快速而肮脏的插件,以及我计划使用的 API 调用,看看这个插件是否需要安全性审计?如果需要安全审计,我的目标不是实现某个功能。

0 投票
1 回答
66 浏览

google-apps-script - Google Apps 脚本更新撰写收件人

这个功能非常简单,我只想更新草稿收件人电子邮件地址。这种格式似乎与文档匹配,但它永远不会起作用。

返回的错误是:

例外:参数(字符串)与 CardService.UpdateDraftToRecipientsAction.addUpdateToRecipients 的方法签名不匹配

文档是:

https://developers.google.com/apps-script/reference/card-service/update-draft-to-recipients-action#addUpdateToRecipients(String)

这是功能:

它应该使用“John Smith”地址填写电子邮件草稿,但它永远无法正常工作。

更新

使用一系列电子邮件确实有效,也许您只是不需要传递名称。

IE

0 投票
1 回答
459 浏览

google-apps-script - 如何在 Google Add-ons 的 iframe 中启用功能/权限策略?

我正在尝试在我的谷歌插件中使用功能策略,串行。我在尝试在 iframe 中启用此特定功能策略时遇到了困难,我认为主要是因为父 iframe 没有启用它。下面是 iframe DOM 树的样子。我无法直接访问“sandboxFrame”和“userHtmlFrame”,因此无法更改其允许的功能。即使我在大多数子 iframe 中设置了“串行”,我也找不到在其 featurePolicy 中启用的“串行”功能。

如果任何熟悉谷歌附加组件的人都可以证明我对任何很棒的事情都是错误的。我将不胜感激任何帮助。

谢谢你。

0 投票
0 回答
52 浏览

google-apps-script - Gmail 中的操作添加触发器以显示特定消息

是否可以触发特定电子邮件从 Gmail 插件中的操作加载。即构建一个附加组件,单击按钮在同一窗口中加载特定的线程ID(而不是打开新窗口或选项卡)以显示该消息。

0 投票
0 回答
35 浏览

firebase - Firebase + Workspace 附加组件:服务帐户不断过期。无法确定原因

我目前在市场上部署了一个 Google Workspace 插件。它使用Firebase 应用脚本库将 Firebase 实时数据库连接到应用脚本项目。促成此连接的服务帐户最近已过期,当使用新的私钥重新建立时,它会在短时间内工作,然后再次停止(30-45 分钟)。

据我所知,我似乎正在使用图书馆提供的参考中概述的服务帐户正确地用于 Add-ons

这个服务帐户工作了一年多,几天前才突然开始。

一旦我为服务帐户发布了一个新的私钥,我就可以测试该服务并且它不会立即工作,我必须从 Manifest 中删除 URLwhitelist 才能成功进行服务测试。然后我可以将白名单添加回附加组件清单,但是不能以这种方式发布。我不确定这是否直接相关,但似乎指向工作区附加组件清单。

是否有关于什么会导致私钥过期的日志或信息?

0 投票
1 回答
66 浏览

google-apps-script - 有没有办法为 Gmail 组成员添加和删除获取 webhook/触发事件?

我很想知道当从特定组中添加或删除成员时,Google 工作区管理 API 或 AppScript 是否提供任何类型的 webhook 或触发器。目前,我可以想出一个解决方案来轮询当前成员,但效率低下。我在这里先向您的帮助表示感谢。

0 投票
1 回答
146 浏览

google-apps-script - 由于过期的刷新令牌 && url 未列入白名单,Google 插件停止工作

大家好,最近我的谷歌日历插件应用程序遇到了用户无法登录的问题。从堆栈驱动程序日志来看,刷新令牌似乎已过期。当我在“googleService.getAccessToken()”的 try catch 块中添加代码“googleService.getLastError()”时。我收到错误消息 { https://oauth2.googleapis.com/token failed because the URL has not been whitelisted in the script manifest.] name: 'Exception' }。这是尝试从谷歌服务器获取访问令牌和刷新令牌的 url。将此网址添加到白名单后,我的问题就解决了。

但真正让我困惑的是:

  1. 我与谷歌支持人员交谈,他们说因为刷新令牌已过期,并且当应用程序在 url 上方调用时,因为它没有被列入白名单,所以它拒绝了请求。因此,我的刷新令牌没有发出,也没有抛出白名单异常。但是,当该 url 未列入白名单时,getAccessToken() 如何抛出过期令牌异常?请求不应该被其他一些例外直接拒绝吗?
  2. 我的应用程序已经运行了半年而没有将该网址列入白名单,并且在过去 6 个月内我没有进行任何更改。为什么只有在我的刷新令牌过期时才会出现 url 未列入白名单的问题?或者刷新令牌过期和网址未被列入白名单问题之间是否存在任何关系。
0 投票
0 回答
95 浏览

google-apps-script - 如何在数据更改时完全刷新包含使用工作表数据填充的下拉菜单的 Google 插件卡(Google 表格)?

我正在构建一个与 Google 表格一起使用的插件,它有一个根主页和 3 个子卡。

卡 1 根据具有相关订单号(整数列表)的工作表数据为订单生成文件夹、文件和文档。

卡片 2 包括一个下拉菜单,该菜单在卡片创建时从电子表格选项卡上的列中的值(订单号)填充,当生成任何文档/订单时(使用卡片 1),它本身通过函数调用进行更新。

我要做的是在使用卡 1 创建新文档时更新卡 2 上的下拉菜单中包含订单号的值。生成文档时,我已成功使用新订单号更新电子表格选项卡,但我无法使用新订单号更新插件下拉列表(正确 - 见下文)。

据我了解,卡片无法刷新,只能完全更换,这应该没问题,但我无法让它工作。我已经看到了这个问题,但它似乎并没有用新的下拉数据完全替换/刷新 Card 2。

我用这个构建插件:

包含下拉菜单的相关卡片:

生成下拉菜单的函数:

我用来尝试用新的卡片完全替换卡片的代码,包括更新的下拉条目:

目前,我正在使用一个按钮进行测试,开始使用syncOrderNumbers()(有效)将更新的订单列表插入电子表格,然后(尝试)重新创建卡片 2,该卡片应该具有新的下拉条目。最终,此过程将在创建新订单文件时自动发生,无需单击按钮。

发生的事情是卡 2似乎已更新,并且新订单号确实显示在下拉列表中,但是当我导航(使用插件顶部的后退按钮)到根卡(插件主页)然后再次导航到卡 2 时,下拉菜单中不再有之前显示的订单号。

运行时createManageOrdersCard(),该generateDropdown()函数在其中,所以我不明白为什么没有创建/显示下拉列表的刷新列表,以及为什么它似乎恢复为从首次加载插件时使用列表?

是否可以对 Card 2 进行完全刷新,以便即使再次导航离开和返回,它包含的下拉列表将代表从电子表格中获取的完全更新的值列表?

非常感谢任何帮助解决这个问题。