问题标签 [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 投票
0 回答
209 浏览

c# - 调用 ProjectResource.Create 时收到 403 Forbidden 错误,但仍创建项目

当我使用调试控制台执行 C#/.NET 代码以创建新项目 ( ProjectResource.Create(...)) 时,我收到“403 Forbidden”错误。但是,我仍然收到Project响应,并且 API 正确地在我的云端硬盘中创建了一个文件。因为 Google 没有公开他们的 API 下发生的事情,所以我不知道为什么我会在调试控制台中看到该消息。没有错误传播到运行时,我有一种奇怪的感觉,这是生产留下的错误输出错误消息。

为什么会发生这种情况,我可以删除/防止此错误吗?


代码:

错误:

调用者没有权限

错误对象:


另一种可能性可能是我设置 Google Console Cloud 的方式存在问题,但考虑到功能仍然完好无损,我不禁认为我做得对。此外,我的凭据授权都成功且没有错误。

我通过以下方式授权我的服务:

我的 API 密钥设置为与 Apps Script API 和 Drive API 一起使用。我的 OAuth 客户端 ID 是type: other(这是桌面应用程序的唯一方式)。

有什么想法吗?

PS 在我的努力中,我尝试使用DriveService来做同样的事情。我仍然在调试中收到相同的错误,唉,它仍然像上面一样工作。

0 投票
0 回答
498 浏览

python - 为远程机器执行 Google App 脚本

我正在根据此处给出的文档编写脚本。我的想法是触发一个谷歌应用脚​​本,它在谷歌电子表格中进行一些更新工作。

我拥有触发应用脚本所需的所有详细信息(如下所列)。

  1. 范围
  2. Credentials.json(包含 client_id、client_secret、project_id 和其他必需的详细信息)
  3. 脚本 ID
  4. 提供了适当范围的 OAuth 令牌和
  5. 将脚本项目部署为 API 可执行文件

我的 Python 脚本:

我的查询是,当我执行这个脚本时,

  • 它再次将我重定向到登录页面,而不是授权它(附加快照)。
  • 每当我触发脚本时,它都会启动浏览器。这里的想法是在不打开浏览器的情况下运行它。

在此处输入图像描述

我如何确保即使从远程计算机调用此脚本也能正常工作(这里的想法是远程触发它并在组织内的任何用户打开它时打开它)并使其成为无浏览器的事务。请澄清。

0 投票
1 回答
1114 浏览

google-apps-script - Google Apps Standalone Script 使用 Google Apps Script API 更新许多绑定脚本

我正在尝试编写一个独立的 Google Apps 脚本,该脚本使用Google Apps Script API来更新许多 Google 表格的绑定脚本内容。

我拥有从模板创建的大约 200 个 Google 表格的表格 ID。我想将这些工作表上的绑定脚本的项目内容更新为与一组主脚本相同。

在使用 urlFetchApp 获取一张纸的绑定脚本的内容作为测试时,我遇到了身份验证错误。错误看起来像:

我正在使用的测试功能如下所示:

我认为这个OAuth2 库在这种情况下可能很有用,我只是不确定如何使用它。谁能指出我正确的方向?

0 投票
1 回答
92 浏览

google-apps-script - 通过 Apps Script API 执行函数会引发 ScriptError

当用户单击扩展程序中的按钮时,我需要创建一个触发器。我设置了所有内容,连接到扩展程序,并编写了以下 Google Apps 脚本代码:

当我尝试从 Chrome 扩展程序运行此功能时,它返回一个错误,表明无法访问此类并远程运行脚本,但我不知道如何解决此问题。

错误文字:

https://developers.google.com/apps-script/reference/script/auth-mode

我发现这个页面可以如果你注册这些权限你可以提出请求但我不明白在哪里写它

0 投票
0 回答
273 浏览

java - 权限被拒绝执行功能

我正在尝试运行下面给出的代码,其中“myApp”是我要运行的脚本中的函数名称。

它给我的错误是:

{“代码”:404,“错误”:[{“域”:“全局”,“消息”:“未找到请求的实体。”,“原因”:“未找到”}],“消息”:“请求找不到实体。”,“状态”:“NOT_FOUND”}

或者,如果我将其部署为 Web 应用程序,则会出现此类错误:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden { "code" : 403, "errors" : [ { "domain" : "global", "message" : "调用者没有权限", “原因”:“禁止”}],“消息”:“调用者没有权限”,“状态”:“PERMISSION_DENIED”}

我必须做什么完美地运行代码????

0 投票
1 回答
1311 浏览

android - 在 Android 上运行 Apps 脚本?

我目前正在开发一个 Android 应用程序,该应用程序要求用户登录 Google,然后通过运行 Apps 脚本来确定用户是否属于 Google Group 进行验证(我无法弄清楚该怎么做这在使用 Apps 脚本之外)。我可以让用户使用 Firebase 身份验证登录,但无论我尝试什么,我都无法运行 Apps 脚本(脚本本身可以工作,因为它可以从浏览器运行),因为我似乎无法获得授权权限(我得到 401 和 403 错误)。

以下是我尝试过的一些事情:

  1. 使用 Google Apps 脚本 API

    /li>

https://developers.google.com/apps-script/api/how-tos/execute

  1. 使用 POST 请求

    /li>

在 Android 中运行 Google Apps 脚本如何使用 Google API 在 OAuth 2.0 中传递“授权”标头值添加标头以在字符串中发布请求https://developers.google.com/identity/protocols/OAuth2InstalledApp

我尝试credentials通过以下方式制作的地方:

  1. 使用 Firebase 身份验证访问令牌

    /li>
  2. 使用服务帐户

    /li>
  3. 使用客户端密码

    /li>

其他一些需要注意的事项:

  • Apps 脚本与服务帐户和 Firebase 项目链接到同一个 Google Cloud 项目。
  • 客户端密码是为 Apps Scripts API 生成的。

那么,我如何正确地进行身份验证才能以用户身份访问 Apps 脚本?还有其他方法可以访问用户所属的 Google 群组吗?

提前致谢!

编辑

在使用以下代码时,我似乎已经得到了正确的身份验证;

但是当它到达最后一行时,整个应用程序冻结并最终停止工作。我认为这是因为应用程序正在等待应用程序脚本返回一些东西?有想法该怎么解决这个吗?

这是应用程序脚本代码顺便说一句:

(即使我只返回 0 它仍然不起作用)。

0 投票
1 回答
3251 浏览

google-apps-script - 如何从 Google OAuth 2.0 Playground 运行 Google App Script 功能 | 调用者没有权限

我创建了一个新脚本,在我的谷歌帐户上创建“谷歌表单”。以下是示例代码: 在此处输入图像描述

接下来,通过转到 Publish > Deploy as API Executable 使 API Executable 在此处输入图像描述

现在,如果我直接从 Google App Script 执行代码,它工作得非常好,并且表单也正在创建中。

现在我在执行来自 Google OAuth 2.0 Playground 的代码时遇到了问题。为此,我遵循了以下步骤:

  1. 访问https://console.developers.google.com并创建一个新项目
  2. 在左侧菜单中,选择“库”
  3. 在 App Script Library 中,搜索“Apps Script API”并启用它 在此处输入图像描述

  4. 接下来,转到凭据菜单并单击“创建凭据”> OAuth 客户端 ID 在此处输入图像描述

  5. 在下一个屏幕上,选择 Web 应用程序

  6. 输入新 Web 应用程序的名称

  7. 在“Authorised JavaScript origins”中设置“ http://localhost

  8. 在“授权重定向 URI”中设置“ https://developers.google.com/oauthplayground ”,因为目前我们将要求 Google OAuth Playground 上的身份验证响应。然后点击创建。

  9. 成功后,您将收到您将在 Google OAuth Playground 中提供的帐户的“客户端 ID”和“客户端密码”,以验证其他用户的应用程序。 在此处输入图像描述

  10. 现在访问https://developers.google.com/oauthplayground并点击设置齿轮。在下拉菜单中,选中“使用您自己的 OAuth 凭据”并输入在步骤 9 中收到的“OAuth 客户端 ID”和“OAuth 客户端密码” 在此处输入图像描述

  11. 接下来,在“步骤 1 选择和授权 API”部分中,选择“Apps Script API v1”并进一步选择“ https://www.googleapis.com/auth/forms ”选项并单击授权 在此处输入图像描述

  12. 接下来,它将询问您要访问所选范围的帐户的授权。在此,我使用创建用于创建代码的“App Script”的同一帐户,以及生成“Client ID”和“Client Secret”的相同帐户。 在此处输入图像描述

在此处输入图像描述

  1. 上述步骤将生成“授权码”,进一步您可以生成“刷新令牌”和“访问令牌”。 在此处输入图像描述

  2. 接下来,我们必须使用服务来执行 google app 脚本代码。单击“列出可能的操作”,然后选择“运行脚本” 在此处输入图像描述

    1. 接下来将生成一个语法,询问您可以从 google app 脚本项目中找到的脚本 ID。为此,在 google App Script 项目上,单击 File > Project Properties,最后将打开一个弹出窗口,引用脚本 ID 在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

  1. 在 PlayGround 中输入脚本 ID,然后通过单击“输入请求正文”按钮设置请求正文。要了解请求正文参数,请参阅文档https://developers.google.com/apps-script/api/reference/rest/v1/scripts/run

在此处输入图像描述

在此处输入图像描述

  1. 现在点击“发送请求”

完成上述所有步骤后,我们收到以下身份验证错误:

在此处输入图像描述

提前感谢您的解决方案。

0 投票
1 回答
329 浏览

google-apps-script - 使用 Google Apps Script java API 部署新版本的 Apps Script

我正在使用 Google App Script java API来部署代码。我正在执行以下步骤:

1.更新最新代码

2.创建一个新版本

3.部署最新版本

当我登录 script.google.com 时,我可以查看我创建的最新版本。它显示状态为deployed。在脚本编辑器中,我也可以查看最新的代码。现在,当我调用应用程序脚本时,请求仍由旧版本处理。如果我使用 API 的方式有问题,有人可以告诉我吗?

0 投票
1 回答
849 浏览

c# - Apps Script API 响应没有“结果”键

我创建了一个 Google Apps 脚本项目来将文件上传到 Google Drive,并用 C# 构建了一个应用程序来执行这个脚本。我使用了文档指南中给出的示例代码

但是,当我通过 Apps Script API 调用我的函数时,我的 C# 应用程序会引发以下异常:

System.Collections.Generic.KeyNotFoundException:'给定的键不在字典中。'

执行此行时:

这是相关的设置代码:

如果我将“结果”更改为“@type”,则会显示此错误

无法将“System.String”类型的对象转换为“Newtonsoft.Json.Linq.JObject”类型。

0 投票
0 回答
148 浏览

python - 带有 Google Python API 客户端的 `scripts.run` 的 403

在尝试使用 Python Google API 客户端测试 Execution API 时,我们目前只有一个输出字符串的函数,我们似乎得到了带有 message 的 403 "The caller does not have permission"。我们能够根据快速入门让库与创建新脚本一起工作。其他人也问过类似的问题,例如:

为什么我的应用程序脚本部署为 API 可执行文件返回 Permission Denied?

但是我看到的一个常见线程是脚本本身应该将控制台项目链接为 by Resources > Developer Console Project,但现在已更改为Resources > Cloud Platform Project,并且将 ID 更改为属于我们使用 OAuth2 凭据拥有的控制台项目的 ID 不起作用,因为它似乎认为该项目不存在。在偶然发现该线程之前,我们甚至不需要挂钩到云平台来执行scripts.run. fwiw 我们还在控制台项目上启用了 Apps Script API。

此处包含的代码(半成品,所以有一个 for 循环,它只使用硬编码的脚本 ID 执行一次):

关于在哪里查看或更改为非常感谢的任何建议,因为这个问题似乎已经在几年前得到了回答,所以猜测的东西已经改变了一点?