从 Chrome 扩展程序访问 Google Apps 脚本 API 导致 403 错误

2024-06-28

我想通过 Google Chrome 扩展程序在外部使用 Google AppScript 功能编辑我的 Google 文档。 为了实现这一目标,我执行了以下步骤:

  1. 通过 Google Docs 设置脚本Tools > Script Editor
  2. 使用主体实现虚拟函数“myFunction”
var body = DocumentApp.openById(<docId>).getBody()
body.appendParagraph("Another paragraph.")
  1. 在脚本编辑器中添加 Google Cloud 项目 IDResources > Cloud Platform Project(该 ID 与我在 Chrome 扩展程序中使用的 ID 相同;该项目还具有脚本 API 权限)。
  2. 通过发布脚本Publish > Executable API在脚本中。
  3. 在Chrome扩展程序的manifest.json中添加oauth2。
  4. 在 Chrome 扩展程序的后台脚本中使用有效的值初始化 gapi JavascriptBrowser 客户端apiKey and discoveryDoc.
// gapi is available in global scope
gapi.load('client', async () => {
    await gapi.client.init({
        apiKey: '<apiKey>',
        discoveryDocs: ['https://script.googleapis.com/$discovery/rest?version=v1'],
    })

    chrome.identity.getAuthToken({ interactive: true }, async (token) => {
        // set my valid oauth token here
        gapi.auth.setToken({
            access_token: token,
        })
    })
})
  1. calling scripts.run:
await gapi.client.script.scripts.run({
    scriptId: <scriptId>,
    resource: {
        function: 'myFunction'
    }
})

不幸的是,我在运行脚本时收到以下错误消息:

{
    code: 403,
    message: "Requests to this API script method google.discovery.Discovery.GetDiscoveryRest are blocked."
    status: "PERMISSION_DENIED"
}

为了确保我没有错过任何内容,我尝试通过 Postman 调用 Google Script API。我使用了端点https://script.googleapis.com/v1/scripts/{scriptId}:run以及 Chrome 扩展程序的有效 oauth2 令牌。这成功了。

此外,我尝试更改初始化函数中的“discoveryDoc”URLhttps://www.googleapis.com/discovery/v1/apis/script/v1/rest?version=v1 https://www.googleapis.com/discovery/v1/apis/script/v1/rest?version=v1- 稍后会出现类似的错误。

{
    code: 403,
    message: "Requests to this API script method google.apps.script.v1.ScriptExecution.Execute are blocked"
    status: "PERMISSION_DENIED"
}

我很茫然。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Chrome 扩展程序访问 Google Apps 脚本 API 导致 403 错误 的相关文章

  • C++ 中的 golang 风格“延迟”[重复]

    这个问题在这里已经有答案了 我正在阅读有关 go 语言的defer http blog golang org defer panic and recover陈述 它允许您指定函数结束时要执行的操作 例如 如果您有一个文件指针或资源 则只需指
  • GLSL:检查是否支持扩展

    您不能使用不受支持的扩展 驱动程序将返回编译错误 但是您可以直接从 GLSL 代码检查某些扩展的可用性吗 有这样的事吗 version XXX core if supported EXT some extension extension E
  • Node.js 和 npm phoenix-client 包与 Kerberized Apache phoenix 的连接

    我正在尝试将 Kerberized Apache phoenix 与 node js 上的 npm jdbc 包连接起来 kerberized apache phoenix 的 node js 和 npm jdbc 包问题 https st
  • 是否可以在 AlertDialog 中自定义正向和负向按钮?

    是否可以在 AlertDialog 中自定义正向和负向按钮 我需要用自定义替换默认的正面和负面外观 setPositiveButton android R string ok new DialogInterface OnClickListe
  • React Native - 图像缓存

    我阅读了该站点中有关 React Native 图像组件的文档并得到了一些问题 https facebook github io react native docs image html https facebook github io r
  • 如何更新 AngularJS 中的元标记?

    我正在使用 AngularJS 开发一个应用程序 我想更新路线更改的元标记 如何更新 AngularJS 中可以在页面上的 查看源代码 中显示的元标记 这是一段 HTML 代码
  • Dash ImportError:无法从“werkzeug.debug.tbtools”导入名称“get_current_traceback”

    我正在尝试在 Pycharm 的 conda 环境中运行一个简单的破折号应用程序 但是我遇到了标题中的错误 奇怪的是 我在互联网上找不到提到这个错误的地方 除了here https community plotly com t dash w
  • Doctest 返回失败,但“预期”和“得到”完美匹配

    我正在尝试做列表部分的第二个练习 http www openbookproject net thinkcs python english2e ch09 html exercises 如何像计算机科学家一样思考 一书的内容 我基本上必须将给定
  • JQuery 循环遍历动态元素并获取数据值

    我正在尝试使用可折叠面板来完成我的要求 sport on click function var thisId this attr id var thisChildren this sportlist thisChildren each fu
  • Android 上方向改变时如何避免重新启动 Activity

    我正在创建一个 Android 应用程序 在其中在画布上绘制视图 当设备的方向改变时 活动将重新启动 我不想这样 如何避免在方向改变时重新启动 Activity 有多种方法可以做到这一点 但正如给定的here https stackover
  • 是否可以暂时禁用 Postgres 中的索引?

    我在一张表上有一个索引 我想暂时禁用它 但我找不到任何表明这是可能的文档 原因 我有一个索引 它可能会导致与它旨在加速的任何查询无关的查询问题 这是一个新的索引 自从引入以来 整个系统似乎速度较慢 我只是希望能够可靠地消除它作为罪魁祸首 这
  • 如何通过JQuery从不带扩展名的URL中获取页面名称

    我有一个网址 http www example com keyword category php or http www example com keyword category php 4 我需要一个神奇的咒语 它只给我页面名称categ
  • 如何水平和垂直对齐内联块

    什么是最好 最干净的使用CSS对齐 dates div位于标题的右侧 垂直于中间 I tried float right 但这不允许vertical align 我想避免使用浮动 所以我使用inline block 并使用相对定位 有没有更
  • XAML:多次设置属性“资源”

    我收到以下错误 属性 资源 设置更多 比一次 这是我的 XAML
  • OSX 的网络连接 NSNotification?

    我只需要在分配有效 IP 地址时发出通知即可 我尝试过通过 SCreachability 进行轮询 但这似乎效率低下 有什么建议么 这看起来应该很简单 但我已经努力了几个小时才能让任何东西发挥作用 我知道这有点旧 但所选的答案并不理想 SC
  • 将画布下载为 PNG 图像[重复]

    这个问题在这里已经有答案了 当我尝试将画布下载为 PNG 图像时 浏览器会在新页面中打开该图像 但不下载它 我的下载代码 btnScaricaEtichetta click function console log Download loc
  • 如何避免在 Scala 中编写令人困惑的 DSL

    我读过一些评论 指出 Scala 的灵活性使开发人员可以轻松编写难以理解和推理的 DSL DSL 之所以成为可能 是因为 we can 有时 https stackoverflow com q 1181533 5986907 omit 和括
  • 表格单元格中 ::after 上的位置在 Firefox 中不起作用?

    以下代码应创建一个跨越其父元素宽度 100 的伪元素 然而 这在 Firefox 中不起作用 但在 Chrome 中却有效 火狐浏览器似乎忽略了 parent s position relative 这是一个错误吗 HTML div cla
  • 如何使相对div居中?

    我一直在尝试让以下代码工作几个小时 但没有成功 您能帮我将项目 div 居中吗 即使页面放大和缩小时 这是我的 HTML 和 CSS bottom position absolute top 100 left 0 right 0 backg
  • SQLDroid 和加密数据库

    我的应用程序有一个已经存在的数据库 已经存在 是指我不在我的应用程序中创建数据库 我只是连接到它并读取数据 为了设置连接 我使用 SQLDroid 现在我想知道是否有可能使用 SQLDroid 加密我的数据库 否则我的数据库未加密 任何人都

随机推荐