Google apps script 使用带有Google Sheets API的REST调用更新Google Sheet

Google apps script 使用带有Google Sheets API的REST调用更新Google Sheet,google-apps-script,google-developers-console,Google Apps Script,Google Developers Console,我正在尝试使用Postman或Curl的RESTAPI调用将一些数据写入google电子表格。通过阅读官方文档、一些教程和博客,我完成了以下工作 创建一个谷歌控制台项目 启用GoogleSheetAPI 创建一个新的服务并下载密钥JSON文件(具有API访问和编辑器角色) 使用Google cloud SDK激活服务帐户(CLI命令:gcloud auth Activate service account--key file keys.json) 获取访问令牌(CLI命令:gcloud auth

我正在尝试使用Postman或Curl的RESTAPI调用将一些数据写入google电子表格。通过阅读官方文档、一些教程和博客,我完成了以下工作

  • 创建一个谷歌控制台项目
  • 启用GoogleSheetAPI
  • 创建一个新的服务并下载密钥JSON文件(具有API访问和编辑器角色)
  • 使用Google cloud SDK激活服务帐户(
    CLI命令:gcloud auth Activate service account--key file keys.json
  • 获取访问令牌(
    CLI命令:gcloud auth print访问令牌
  • 我想写数据的谷歌电子表格是私有的,只有REST客户端和我自己才能写数据。另外,创建OAuth凭据并使用它们对REST应用程序进行身份验证是不可能的,因为这不涉及任何用户。此外,我无法将电子表格与服务帐户生成的邮件共享(从UI),因为组织禁用了“外部共享”选项也不可能将工作表部署到公共场所

    我在网上找到的所有资源都要求从UI将服务帐户邮件添加到工作表中。有没有其他方法来实现这一点,因为这在我的情况下是不可能的

    注意

    我收到以下错误(因为我没有与服务帐户邮件共享我的工作表)


    在您的情况下,您可以使用一个小的更改将服务帐户变成一个有用的工具。您可以授予它以访问用户数据。这样,您就可以使用该帐户访问任何用户数据(无需事先与服务帐户共享)。请向我询问任何其他疑问。

    但据我所知,由于此处仅向通用电子表格添加数据,我认为不需要用户数据。阅读您的评论,我假设电子表格可以由一个或多个人员(即所有者和编辑)编辑。我知道您想用服务帐户编辑电子表格。在这种情况下,在授予它域范围的委托后,您可以将作为这些用户(所有者或编辑器)之一使用。在这种情况下,服务帐户将向API发送请求,但更改将作为授权用户执行。
    {
        "error": {
            "code": 403,
            "message": "Request had insufficient authentication scopes.",
            "status": "PERMISSION_DENIED",
            "details": [
                {
                    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                    "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT",
                    "domain": "googleapis.com",
                    "metadata": {
                        "service": "sheets.googleapis.com",
                        "method": "google.apps.sheets.v4.SpreadsheetsService.GetValues"
                    }
                }
            ]
        }
    }