问题标签 [google-apps-script-addon]

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 回答
1099 浏览

google-apps-script - 使用 Google Sheet Add-on 时 Stackdriver 中“脚本延迟(xx 分钟)等待配额”的含义

我已经开发了一个 Google 表格插件“Jira 表格工具”,根据配额仪表板,我的理解基本上应该只受到来自 google 的以下配额的影响:

  • 属性读/写
  • URL Fetch 调用
  • 收到的 URL Fetch 数据

a) 配额概览对“Consumer”、“Google Apps..”和“G-Suite”中的限制进行分类。如何阅读/理解这个;限制是否适用于我的附加组件的每个用户,或者限制是否适用于我的开发人员帐户以用于人们使用的所有已安装实例?

b)在我相关的 Stackdriver 日志中,我可以看到很多(每天/每小时几个)错误日志,例如:

等待配额的脚本延迟(21.0 分钟)

脚本延迟(813.0 分钟)等待配额

我不明白为什么以及如何。对于我自己,当我自己使用附加组件时,我无法重现此类日志的任何触发器。它一定是由我的附加组件的其他用户引起的,我想了解为什么会发生这种情况,对用户的影响是什么以及我如何改进我的附加组件以不导致此类错误/延迟。

非常感谢任何见解和帮助。提前谢谢

0 投票
0 回答
31 浏览

google-apps-script - “错误 401(OAuth2 错误)!!1”运行 onInstall()

我有一个已经工作多年的脚本。本周,菜单停止工作;对于所有用户。

实际代码:

在手动运行 onInstall 时的脚本编辑器中,我得到“需要授权”-弹出窗口,但它引用了“无标题项目”而不是我命名的项目。这可能是我单击“查看权限”时收到 401 错误的原因。

使用相同的代码创建一个新脚本解决了这个问题,但带来了无法删除其中任何一个的新问题;尝试了多个用户。

onInstall 仍然不会触发,因为第一个脚本被破坏了。

0 投票
1 回答
163 浏览

google-apps-script - 传递给客户端代码时服务器端对象丢失

这与通过 google.script.run 传递对象时在服务器端丢失的 Object 属性值不同

我正在尝试设置我的 Google Apps 脚本插件测试框架。由于 Test as add-on 不能用于测试可安装的触发器,我想知道是否可以从有界项目中提取服务器端代码以用作库来测试调用服务器端函数的边栏。

如果我使用 Run > Test 作为附加组件运行以下代码...它会显示我的菜单两次

  1. 作为名为“侧边栏”的自定义菜单,位于帮助菜单旁边
  2. 作为附加菜单,在附加组件 > 我的项目
  • 当我单击侧边栏 > 打开时,单击侧边栏按钮会getMail()返回undefined
  • 当我单击 Add-on > My Project > Open 时,单击侧边栏按钮getMail(),如预期的那样,返回活动用户电子邮件地址。

同样的情况,服务器端对象丢失,当我用getMail()另一个使用电子表格服务返回单元格值的函数,甚至是返回原始字符串的函数替换该函数时。

我错过了什么?

底线是我想在我的侧边栏添加一个按钮,该按钮创建一个可安装的触发器并从电子表格中获取一些值。

用作库的电子表格

代码.gs

边栏.html

用于替换 getMail() 的其他函数示例

用作图书馆客户端的电子表格

  1. 将库添加到项目中
  2. 添加以下代码

    函数 onOpen(e) { aLib.onOpen(e); }

    函数 showSidebar(){ aLib.showSidebar(); }

    函数 getEmail(){ aLib.getEmail(); }

作为插件测试...

  1. 单击运行 > 测试作为附加组件
  2. 将“电子表格用作库客户端”添加为用于测试附加组件的文档
  3. 启动文档

0 投票
0 回答
252 浏览

google-apps-script - 在 Google 表格插件中,如何检查用户是否已购买订阅?

我已经编写了一个我想通过它获利的 Google 表格插件。在 Apps Script .gs 文件中,我无法弄清楚如何查询 Chrome 网上应用店以检查用户是否已为我的插件付款。我能找到的最接近的东西在这里:

https://developer.chrome.com/webstore/payments-iap

它说我需要在我的应用程序中添加一个 buy.js 文件;但是,没有 .gs 等效项,我无法弄清楚如何修改 buy.js 的内容以使其在 Apps 脚本中工作。

如果有人知道如何在 Apps 脚本中检查用户的付款,我将非常感谢分享这些信息。

0 投票
1 回答
175 浏览

google-apps-script - 如果用户删除了附加组件的权限,则停止可安装触发器

如果用户在有权访问您帐户的应用程序页面中删除了插件的权限,如何停止插件的所有可安装触发器?

对于独立脚本,用户将收到“Google Apps 脚本失败摘要”电子邮件。但对于插件开发者来说,插件只会不断抛出错误“脚本无权获取活动用户的身份”。在 Stackdriver 日志记录中。

请注意,这种情况与卸载或禁用加载项不同,因为可以通过测试事件对象的 authMode 来停止触发器。例子:

0 投票
0 回答
1064 浏览

google-apps-script - 发布后未出现 Google Apps 脚本菜单项

--EDIT-- 事实证明我写的所有东西都有效(对于我的目的来说已经足够了)。问题是,在发布脚本时,我忽略了在发布时更改版本号,因此 Google 系统上没有更新任何更改。我在这里找到了解决方案。

——原始帖子——我有一个我一直在写的脚本,现在准备发布它。在我的脚本中,我可以使用插件菜单很好地运行脚本,但是当我发布和安装插件时,我的自定义菜单项不会出现。我已经尝试了我能想到的一切,但似乎仍然没有任何效果。我看到有人说 Chrome 控制台中会出现错误,但我没有得到任何类似的东西。

这是我创建菜单的代码:

我已经尝试了谷歌在此处描述的两种方式,但它们都没有显示菜单,但是后一个示例确实在原始的未发布版本上回退了错误“Google Apps 脚本:您无权调用提取”附加组件

这是我的第一个附加组件,因此将不胜感激。

0 投票
2 回答
2745 浏览

google-apps-script - “您无权调用 showModalDialog”

我们在 6 月 8 日星期五第一次注意到这个问题。在此之前它可能已经潜伏了一段时间,因为我们不经常使用该插件。我们首先看到它在 script.google.com 上的项目中运行“测试作为附加组件...”,无论正在测试的代码版本如何。然后我们让多个用户使用从 G Suite Marketplace 下载的公共插件从他们自己的帐户中重现该问题。公共附加组件可以追溯到 5 月 2 日,并且在发布时运行良好。

在 Google Drive 中打开任何工作表,并获取 Workforce Dimensions Admin 插件。选择“生成设置文件”并收到错误消息“您无权调用 showModalDialog”。

这是一个影响其他附加组件的已知问题吗?

0 投票
1 回答
83 浏览

javascript - 我可以从 Google Apps 脚本代码文件的侧边栏中获取当前 HTML 吗?

我正在编写一个 Google Apps 脚本(Sheet Add-on),并且我想将当前显示的侧边栏的 HTML 返回到服务器端脚本。原因是我正在制作一个基于模板的系统,其中侧栏的 HTML 可能来自一系列可能的模板,但所有模板都具有相同的回调函数返回到服务器以使编写它们更容易。所以服务器端的通用回调函数需要能够判断它是从哪个 HTML 调用的。

有没有办法做到这一点?

0 投票
1 回答
1064 浏览

google-apps-script - 调整插件侧边栏的大小以方便使用

我正在尝试使用 Google Apps 脚本实现交互式页面。我已经在 UI 侧边栏中成功打开了一个文档,但是侧边栏的尺寸使其难以使用:

如何使嵌入式侧边栏页面更具吸引力/更易于使用?

我的谷歌文档在这里:https ://docs.google.com/document/d/17AtHwUSQdci-lh7BDvXeELcpZdXr27AryHlfagRR4Hg/edit

在此处输入图像描述 戈德格斯

0 投票
1 回答
1153 浏览

javascript - 为什么我的 Google 表单插件会打开一个新标签页?

我正在使用带有用于其 UI 的 HTML 文件的 Google Apps 脚本制作 Google 表单插件。我几乎已经采用了快速入门并更改了一些内容。

这是我第一次做任何类型的 HTML 令人尴尬。

在我的 UI 中,我有一个按钮:

这是调用实际工作的谷歌应用程序脚本的相应javascript:

按钮出现,调用函数成功。

问题是按下此按钮还会打开一个新的空白选项卡,指向特定链接,如下所示:

在控制台中,它运行一条错误消息,内容如下:

不安全的 JavaScript 尝试从 URL 为“ https://n-it2esyxcfj91uyg675645seyxh42jvgbfydr5e6u56y-0lu-script.googleusercontent.com/userCodeAppPanel ”的框架中为来源为“ https://docs.google.com ”的框架启动导航。试图导航顶级窗口的框架是沙盒的,但未设置“allow-top-navigation”或“allow-top-navigation-by-user-activation”的标志。

如何确保脚本运行时没有打开新选项卡?

我确定它在 HTML/js 中并且不是 Google Apps 脚本代码,因为我注释掉了 Google Apps 脚本函数的主体,但问题仍然存在。