首页 > 解决方案 > 通过 Google Sheets API 使用 REST 调用更新 Google Sheet

问题描述

我正在尝试使用 Postman 或 Curl 的 REST API 调用将一些数据写入谷歌电子表格。通过遵循官方文档、一些教程和博客,我做了以下工作。

  1. 创建一个谷歌控制台项目。
  2. 启用 Google Sheet API。
  3. 创建一个新服务并下载密钥 JSON 文件(具有工作表 API 访问权限和编辑器角色)。
  4. 使用 Google Cloud SDK 激活服务帐户 ( CLI command: gcloud auth activate-service-account --key-file keys.json)
  5. 获取访问令牌 ( CLI command: gcloud auth print-access-token)

我要写入数据的 Google 电子表格是私有的,只有 REST 客户端和我自己才能写入数据。也无法创建 OAuth 凭据并使用它们来验证 REST 应用程序,因为这不涉及任何用户。此外,我无法与服务帐户生成的邮件(来自 UI)共享电子表格,因为组织禁用了外部共享选项。也不可能将工作表公开发布

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

笔记

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

{
    "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"
                }
            }
        ]
    }
}

标签: google-apps-scriptgoogle-developers-console

解决方案


您可以使用一个小的更改将服务帐户转变为适合您情况的有用工具。您可以授予它域范围的委派以访问用户数据。这样,您可以使用该帐户访问任何用户数据(无需事先与服务帐户共享)。请问我任何其他疑问。


推荐阅读