繁体   English   中英

从 Google Apps 脚本 (GAS) 到 Sheets API 的 OAuth 2.0

[英]OAuth 2.0 from Google Apps Script (GAS) to Sheets API

根据Google 的文档,我实现了以下代码以将一行附加到 Google 表格(并且我是此表格的所有者)。

function addSalaryLog(updateArray) {
  const resource = {
    "majorDimension": "ROWS",
    "values": [updateArray]
  };
  const spreadsheetId = 'here_goes_the_spreadsheet_id';
  const range = 'A:A';
  const optionalArgs = {valueInputOption: "USER_ENTERED"};
  Sheets.Spreadsheets.Values.append(resource, spreadsheetId, range, optionalArgs);
}

当我调用它时,作为回报,我收到以下错误:

GoogleJsonResponseException:对 sheet.spreadsheets.values.append 的 API 调用失败并出现错误:请求缺少所需的身份验证凭据。 预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。 请参阅https://developers.google.com/identity/sign-in/web/devconsole-project

不用问,我点击了链接 :-) 它解释了如何在开发者控制台中创建 OAuth 2.0。 创造了✅。 但后来它并没有解释如何实际授权脚本。 我希望在调用 Sheets API 之前,我应该能够触发启动权限对话框。

我看到以下可能的选项:

  1. 而不是Sheets....使用URLFetch
  2. 触发身份验证(首选)。 这里有什么提示吗?

更新我已经实现testAddSalaryLog() ,它与原始函数完全相同,但具有硬编码值。 它有效! 这让我认为解决方案是强制触发权限屏幕。

我有 3 个问题/建议:

问题 1。

由于您使用的是 Sheets API。 您是否在脚本中启用了Google Sheets API 高级服务 Editor > Service > Google Sheet API

在此处输入图像描述

在此处输入图像描述

问题2。

您是否通过查看项目Overview来查看是否将“Sheets API 范围”添加到脚本中? 如果它们不是自动添加的,您需要按照以下步骤手动添加它们

  1. 访问“项目设置”以在编辑器中启用清单文件。 在此处输入图像描述

  2. 返回编辑器并选择“appsscript.json” 在此处输入图像描述

  3. 添加范围:

    "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets" "https://www.googleapis.com/auth/drive.file", 在此处输入图像描述

问题 3。

你已经授权代码了吗?

在 Apps 脚本编辑器中,单击Run 第一次运行示例时,它会提示您授权访问:

选择Review permissions > Allow.

在此处输入图像描述

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM