问题标签 [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 回答
733 浏览

google-apps-script - 以编程方式将容器绑定脚本添加到 Google Docs 文件

我正在使用 Drive REST API 将文件上传到 Google Drive。我希望默认情况下在这些文件上启用一些默认加载项。我在这里阅读了有关容器绑定脚本的信息。

但只能在 Google Docs UI 中打开文件后添加容器绑定脚本。有没有办法在上传时或以编程方式上传后将脚本绑定到文件?

0 投票
0 回答
102 浏览

google-apps-script - 如何与其他 Google Cloud 项目共享 Google Apps 脚本插件的 Google API 授权?

系统组件

  • 发布了 Google Apps 脚本插件“插件”)并在 G Suite 市场上发布,用于全域安装
    • 仍在其原始 GCP 项目P1中
    • 具有创建脚本时自动生成的 OAuth2 客户端 ID
  • Google Cloud 中的Web 应用程序(“web-app”),出于配额原因,最好在单独的项目P2中(但与附加项目的所有者和组织相同)。它正在替换一个具有相同功能的网络应用程序,该功能直到现在是附加组件的一部分。

client-secrets-addon.json看起来像这样:

所有者无权向其添加不同的重定向 URI。显然是特定于任何 Apps 脚本项目的默认客户端的安全约束。看来,我们不能只通过新的web-app使用相同的客户端 ID 。

用例

资源所有者的附加安装

AG Suite 管理员或资源所有者为 Google Drive 中的文件安装插件。在安装过程中,用户会看到 OAUTH2 同意屏幕,以将必要的范围授予 Google Drive 和其他一些 Google API 范围(包括离线访问)。

加载项被触发

当没有 Google 帐户的用户使用Google Drive 中资源所有者的文件 ( file ) 时,会触发加载项。附加组件“以我的身份执行”(脚本所有者)。插件代表资源所有者向其他用户发送通知。

用户响应通知

收到通知后,用户(不是 Google 帐户)将被定向到网络应用程序以执行某些操作。结果,网络应用再次需要访问文件

问题

  1. web-app之前是在与插件相同的脚本中实现的。有许多资源所有者和管理员已经授予了范围,我们不想因为新的web-app缺少范围而破坏附加组件

  2. 由于在web 应用程序访问文件时资源所有者不存在,因此web应用程序在安装过程中需要范围,就像附加组件一样。

要求

  1. 如果在加载项安装期间资源所有者只需完成一项授权,则最佳用户体验将是。

  2. 现有资源所有者无需在新Web 应用程序中重复授权以避免中断。

  3. 在 Google 帐户的具有访问权限的应用程序列表中,将加载项网络应用程序显示为一个应用程序,并且撤销访问权限肯定会撤销这两个组件的访问权限。

  4. 如果是满足这些要求的唯一选择,我们会考虑将web-app托管在与附加组件相同的项目中。

共享已完成的插件的Google API 授权的最佳方法是什么,以便新的网络应用程序可以使用它们?

0 投票
1 回答
788 浏览

google-apps-script - 无法在 Google Apps 脚本插件的“授予权限”对话框中设置项目名称

我有一个 Google 表格插件,目前正在我的域中进行测试。对于这篇文章,我们称之为My First Add On。当用户安装插件时,系统会提示他们提供权限,但它始终在对话框中显示为“未命名项目”:

屏幕截图:使用 Google 提示登录

在我能找到的任何地方,项目名称都设置为My First Add On :

  • Google Apps 脚本项目名称
  • Google Cloud Platform 项目名称(IAM > 设置)
  • Google Chrome 网上应用店插件名称(开发者仪表板)

我的附加组件以“私人”可见性发布,仅对给定 Google 组中的人员(我信任的测试人员)可用。

我搜索了文档和论坛,看看我在这里缺少什么,但找不到任何涵盖这种情况的东西。

这必须是基本的,但我完全被困住了,我唯一可用的支持选项是在这里发帖。我会很感激任何帮助,伙计们!

0 投票
0 回答
72 浏览

google-apps-script - 将 Google Apps 脚本库变成……扩展?

我有一个 GA 脚本库,其中包含一些我经常使用的 Google Docs 操作(例如特定格式、标题编号或特定搜索)。当我想使用这些功能时,我目前在文档中添加了一个脚本,加载菜单构建器(在库中),然后将库添加到该脚本中。这似乎是跨多个文件使用库的最短方式。我有这些问题:

(1) 有没有一种方法可以让我的所有 Google 文档都可以使用这些库函数,而不必为每个文档加载它们?我的理解是这是不可能的。

(2) 这是正确的吗:使这些库函数可用的最佳方法是构建一个扩展,并将其发布到 Chrome 商店。(可能作为“测试版扩展”?)

如果这是正确的,那么有人可以指出我将脚本转换为文档扩展的简单分步指南吗?我环顾四周,但我所看到的并不是那么清楚。理想情况下,我希望能够经常更新扩展,因为它仍在开发中。

谢谢!

0 投票
3 回答
2914 浏览

google-apps-script - 没有在清单的 api_console_project_id 字段中指定 id 的 API 控制台项目

我正在尝试发布电子表格网络插件,但出现以下错误。

没有在清单的 api_console_project_id 字段中指定 id 的 API 控制台项目

在此处输入图像描述 谁能告诉我为什么我会收到这个错误?

0 投票
0 回答
154 浏览

google-apps-script - 不断收到谷歌脚本插件的应用错误

我正在尝试将我的谷歌脚本上传到市场,但是当我尝试时,我得到了这个错误......

“此项目不是应用程序,请从清单中删除应用程序部分。”

我在谷歌脚本中的清单如下......

知道这里发生了什么吗?

0 投票
1 回答
232 浏览

google-apps-script - 我在哪里指导 Gmail 插件中 HTML 表单的操作?

我正在尝试创建一个用于登录的 HTML 表单。我特别需要能够使用该<input type="password" />功能。

我的问题是我不确定action应该是什么,或者我是否应该如何捕获表单中的信息。

如何捕获表单数据,以便将其发送到我的 API 并验证登录?

0 投票
0 回答
75 浏览

google-apps-script - Oauth 2 属性提供了无效值:Header:toType

将我的 Apps Script 项目脚本部署为 Google Sheets 插件后,运行 OAuth2 时出现此错误:

提供的属性值无效:Header:toType(第 303 行,文件“Service”,项目“OAuth2”)

我的事情是,除了作为附加组件进行测试之外,没有任何东西可以明智地改变代码。为什么会发生这种情况,我该如何解决?

编辑:

这是服务功能:

现在一切正常,当然无法成功进行身份验证和重定向,但问题是在打开链接并登录谷歌帐户后,我得到了那个错误。同样的代码在作为附加组件进行测试之前也可以正常工作。

0 投票
1 回答
154 浏览

google-apps-script - 谷歌工作表添加不显示所有工作表的菜单项

所以我刚刚发布了一个 Google 表格插件。

它显示了第一个工作表的菜单项。但是,一旦我在该工作表上运行某些功能,它只会在该工作表上显示菜单项,而不是在我的驱动器中显示其他工作表。

我认为插件脚本以某种方式绑定到第一张纸。

任何想法为什么会发生?

0 投票
1 回答
258 浏览

google-apps-script - Google Sheet 上的时间触发器 Add On

我创建了一个 Google Apps 脚本,现在想将其作为 Google Sheet 插件发布。

脚本的工作方式是每天(通过时间触发器)从 API 获取一些详细信息,如果在通过 API 获取的数据中发现任何新信息,则向安装程序发送通知。

当人们安装这个附加组件时,我希望它每天为他们自动运行,并在发现上述更改时向他们发送电子邮件。

这可以通过谷歌表添加吗?