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

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

google-apps-script - 如何在调用 Execution API 之前刷新 OAuth 令牌?

我正在从我的网络应用程序调用应用程序脚本执行 API。我正在获取ScriptApp.getOauthToken()并将其存储在工作表内。当我打开我的网络应用程序时,我将获得存储的访问令牌并在它的帮助下调用执行 API。

但问题是,一段时间后,令牌过期了,它说

需要授权

当我调用执行 API 时。

有没有办法让访问令牌保持活动状态或在需要时刷新它?

0 投票
0 回答
139 浏览

permissions - 如何知道哪个 Google Apps Script API 是作用域的原因?

背景:我是PlantUML Gizmo的创建者,它是最早的 Google Docs 插件之一。因此,它是一种遗留的附加组件,早在今天管理 OAuth 2.0 范围和同意的流程(似乎仍在发展)之前,我就开始了开发。有一次我什至不得不将它迁移到 G Suite Marketplace,所以我不完全确定今天创建新插件的过程会是什么样子。

几周前,我收到了一封来自 Google 的电子邮件,说我必须在某个日期之前“提交您的应用程序的敏感范围以进行 OAuth API 验证”,我现在正努力尊重这一点。

这是我看到的范围列表:

Google API 的范围列表

其中两个让我感到惊讶,即电子邮件和个人资料。我的插件不直接使用这些东西,所以我从来没有(据我所知)请求这些范围。

另一方面,我记得在早期,我的插件会请求“允许此应用程序在您不在时运行”的权限(请参阅权限列表)。我从一名 Google 员工(或现在已死的 Google+ 论坛上)那里得到的解释是,这是由于 OAuth 令牌在您离线时被刷新。当用户不存在时,我从不明确地在我的代码中执行任何操作!

所以我的问题是要知道为什么我的附加组件在配置时需要它email和/或范围。profile我今天可以轻松删除这些范围,但我害怕破坏某些功能。

在 Scopes 页面中单击,Learn more我会看到一长串 API。我可以email在此页面上找到范围,它只显示:

https://www.googleapis.com/auth/userinfo.email 查看您的电子邮件地址

我没有明确要求该范围。我如何知道它是否来自 API 调用(例如,保存偏好数据等)?范围也是如此profile

ps 我一直觉得作为用户(开发人员)知道哪些功能(API 调用)需要哪些权限/范围是令人沮丧的。我一直想要透明度(并作为开发人员提供)。

0 投票
0 回答
88 浏览

authentication - 有没有办法让一个 Apps 脚本调用另一个,但在不同用户的上下文中?

我在内部企业环境中编写了数千行 Apps 脚本,但一段时间以来一直在为此绞尽脑汁,但没有任何成功。这是用例:

  • App Script #1 由我们组织中具有日历读/写权限的用户运行。但是,为了正确操作,它需要访问某些数据,这些数据只能由具有不同权限的单独用户访问。
  • App Script #2 作为第二个用户运行,并通过返回请求信息的 doPost() 或 doGet() 提供 API 端点。

出于安全原因,无法授予用户#1 用户#2 所需的全部权限,因此用户#2 希望公开一个API,该API 仅向用户#1 提供一组非常特定的信息。

最直观的解决方案似乎是让用户 #2 部署一个 Apps 脚本,其中“将应用程序执行为”字段设置为“我”,并将“谁有权访问该应用程序”字段设置为组织的 GSuite 域(出于安全原因,这必须限制在组织内部)。

但是,如果用户 #1 然后尝试使用 UrlFetchApp 访问该端点,则请求将失败(我相信使用 HTTP 403),因为该请求确实包含一个会话令牌来证明该请求来自同一个 GSuite 组织。Google 似乎没有提供生成此类会话令牌的方法;尝试设置值为“Bearer”+ ScriptApp.getOAuthToken() 的“授权”标头不起作用。

我还尝试使用 Apps Script API 让用户 #1 执行用户 #2 部署的脚本,但是 Apps Script API 清楚地表明脚本只能在调用用户的上下文中执行。

我还单独阅读过 Google Apps 脚本不能很好地与服务帐户配合使用 ( https://issuetracker.google.com/issues/36763096 )。

希望我遗漏了一些明显的东西。有任何想法吗?

0 投票
0 回答
87 浏览

java - 无法通过 REST api 调用 App Script 函数

当我列出部署时,我正在使用 Java API 在电子表格上调用 AppScript 函数

我可以看到我的部署,但 deployment.getFunctionSet() 是 NULL 所以当我打电话时

我明白了

问题 - 如何从谷歌应用脚​​本调用函数?)

0 投票
1 回答
68 浏览

api - 使用 Blogger API 插入的一些帖子未显示在主页上

我正在使用 Blogger API 插入帖子。通过以下博客了解问题:

链接:https ://post-testing123.blogspot.com/

在这个博客中,我有 7 个帖子:

使用 API 请求创建了 5 个标题为“标题#no”格式的帖子。

2 个标题为“Manual #no”的帖子是手动创建的。

手动帖子是在 API 帖子之前创建的。

在这个博客中,我将主页上显示的帖子数量设置为 3。

因此,在主页上,使用 API 创建的 5 个帖子中有 3 个是可见的。

点击 Older 时,只显示 2 篇手动帖子,不显示剩下的 2 篇 API 帖子。

在档案中显示所有 7 个帖子。

如果我将要在主页上显示的帖子数设置为 30 之类的大数字。那么,所有 7 个帖子都正确显示。

我尝试过更改主题,但它不起作用。

0 投票
1 回答
209 浏览

google-apps-script - 从 Python 向 Google Apps 脚本传递数据。怎么了?

这是我的 Python 方面。

这是 Apps 脚本方面:

记录器中的输出:

我一直在试图弄清楚我做错了什么以及为什么当我尝试索引它时对象返回未定义,即使记录器能够读取这些值也是如此。似乎与使用数字作为未正确处理的对象键有关。起初我确信我在做一些愚蠢的事情,但这是我缩小范围的测试用例。

0 投票
0 回答
164 浏览

google-apps-script - 以编程方式为容器绑定表启用特定的 appscript

我想以编程方式启用容器绑定的 appscript。我可以通过 api 创建应用程序脚本并附加到工作表。问题是如果工作表已经启用了另一个应用程序脚本,那么除非我指定它,否则该脚本正在工作而不是我的脚本tools->script editor->select project->enable。我已经通过 api 创建了脚本。我可以通过 api 启用它吗?

到目前为止,我在下面有这段代码。但没有如何以编程方式启用脚本的代码。作为旁注,如果没有其他应用程序脚本附加到电子表格,则以下脚本将按预期工作。否则它是不可预测的

0 投票
1 回答
854 浏览

javascript - 基于电子表格中的值的自定义日期和时间的 Google Apps 脚本基于时间的触发器

我正在尝试创建一个 Google 应用程序脚本,该脚本能够根据电子表格中的值在特定时间安排邮件。将有多个日期时间单元格基于这些单元格进行触发。我曾尝试使用以编程方式添加触发器,ScriptApp.newTrigger()但我没有得到该函数何时创建它应该运行。任何有关如何解决此问题的见解都会很棒。

编辑:当用户像这样提交表单时创建触发器。

现在发送邮件的功能

但现在的问题是不知道将邮件发送给谁。例如。用户在下午 2 点为 Mark 和在 4 点为 Jack 提交带有 Mail Trigger 的表单。现在在派发邮件功能中如何确定这封邮件是派发给马克还是杰克。我没有看到将参数传递给触发函数的方法。有什么办法解决这个问题吗?

0 投票
1 回答
435 浏览

google-apps-script - 将 Google Apps 脚本项目切换到 V8 运行时时的范围问题

由于 Google Apps Script 强行将“Rhino”推送到“V8”引擎,应用程序正在自动从 Rhino 迁移到 V8。所以我们的应用程序正在询问需要在“ appscript.json ”文件中手动指定的“范围”。

请检查下图:

应用问题

文件 :-

代码.gs

当我像下面这样更新时,它工作正常。

应用脚本.json

我们担心的是我们有超过 100 个生产应用程序,我们不能每次都手动更新。你能帮助我们如何在生产中没有任何问题的更新吗?

0 投票
0 回答
34 浏览

google-sheets - 将宏分配给单元格而不是绘图/文本框

是否可以将宏/脚本分配给 Google 表格中的单元格,以消除需要将其分配给绘图/文本框的需要?我有一个标题A1,单击该标题时,我想将我带到另一张纸。我的脚本有效,只是在单元格上方有一个按钮看起来有点乱