Google Spreadsheet API v4 使用“ApiKey”在电子表格中“添加行”

2024-02-10

我正在尝试使用 Google Spreadsheet API v4 直接使用“ApiKey”在电子表格中“添加行”,而不使用 OAuth 2.0。

如果我使用 OAuth 2.0,它成功“添加行”,但我的要求是使用“ApiKey”

参考了这个网址:https://developers.google.com/sheets/api/guides/migration#add_a_new_row_of_data https://developers.google.com/sheets/api/guides/migration#add_a_new_row_of_data

但没有使用“APIKey”的正确文档。当我尝试使用“Apikey”时,它向我抛出“未经授权(401)”的错误。


虽然文档并不完全清楚,但可以将行添加到电子表格,而无需通过 OAuth 流程,其中应用程序必须获得特定用户的同意。

使用服务帐户时的流程与使用 APIKey 时的流程非常相似,只是可以向服务帐户授予写入工作表的显式授权。

这是有效的,因为服务帐户就像一个用户,只是一个非人类的用户。流程如下:

  • 转到 Google Cloud Console 并在您的 GCP 项目中创建一个服务帐号。 (如果您没有项目,则可能需要创建一个。)
  • 创建密钥并将其下载为 JSON 文件。 JSON 文件将包含私钥、密钥 ID、服务帐户的电子邮件地址以及其他信息。将其保存在安全的地方。这是敏感数据。
  • 接下来,在电子表格中,将服务帐户电子邮件地址添加为具有编辑权限的用户。

之后,您现在可以使用服务帐户 client_email 和 JSON 文件中的 private_key 来创建 JWT 令牌来授权请求​​。您现在可以写入工作表,因为服务帐户是工作表中的授权编辑者。

See 使用 OAuth 2.0 访问 Google API - 服务帐户 https://developers.google.com/identity/protocols/OAuth2#serviceaccount了解更多信息。请注意,虽然文档听起来服务帐户无法访问用户数据,但在这种情况下可以,因为我们将服务帐户添加为工作表上的编辑器。

另请参阅将 OAuth 2.0 用于服务器到服务器应用程序 https://developers.google.com/identity/protocols/OAuth2ServiceAccount.

现在,我想说你的问题表明你“需要使用 APIKey”。相反,我假设您的要求是应用程序必须能够写入工作表而不提示用户进行身份验证。如果是这种情况,那么这可以解决您的问题,但如果问题确实涉及使用 APIKey,那么唯一的方法就是使该表对所有未经身份验证的用户公开可写。

我也不知道您使用的是什么编程语言,因此我将把 JWT 令牌的创建作为练习留给读者,链接的文档还以 Java、Python 和原始 HTTP 的形式描述了该过程/休息请求。希望这可以帮助!

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

Google Spreadsheet API v4 使用“ApiKey”在电子表格中“添加行” 的相关文章

  • 为什么 copyTo(... PASTE_VALUES) 在宏中间不起作用?

    我长期使用的电子表格技术之一是就地复制 粘贴特殊值 C PSV 使用公式生成我感兴趣的值后 I C PSV 然后可以删除源数据 所以我写了一个使用这种技术的宏 但单元格最终是空的 但如果我将宏分成两个 在 C PSV 之前结束第一个宏 那么
  • 根据一列删除重复项并保留最后一个条目

    我正在尝试根据一列删除重复项并保留最后一个条目 现在我的公式保持第一个值 我正在使用这篇文章中找到的公式 选择具有不同列值的所有行 Google 查询语言 https stackoverflow com questions 30318460
  • Google Sheets API v4:batchGet 不起作用

    无法使用 batchGet 让 Google Sheets API v4 返回多个范围值 它给出以下错误 尽管文档说它需要 valueRanges 但所有范围和电子表格 ID 都是正确的 额外的参数块必须是 javascript 对象文字
  • Google Apps 脚本 Gmail CSV 导入工作表错误

    我从各种谷歌搜索中拼凑了这段代码 如果电子邮件有特定标签 这些代码将提取电子邮件的 CSV 附件 function importCSVFromGmail gets first latest message with set label va
  • 带有 Google App 脚本的 Google Sheets:如何在返回最终结果之前向单元格写入“状态”消息?

    我有一个函数可能需要一段时间才能返回输出 有没有办法让它在单元格中打印一条消息 然后稍后用输出覆盖该消息 该函数可能需要 30 秒才能运行 并且可能在 20 30 个单元格中使用 因此很高兴看到哪个单元格仍在计算以及哪个单元格已完成 fun
  • 需要从表单生成的工作表中移动行

    我有一个调查表 我需要我的团队查看一次 但之后我希望我的团队将其设置为 已关闭 的行保存到存档表中 过去 我在其他工作表中使用过此脚本 但它似乎不适用于表单链接工作表 经过研究 我发现您无法从表单链接表中剪切 但可以删除行 我的理论是脚本正
  • 两列单元格列表(下拉列表) - Google Sheet

    我需要一个两列单元格列表 下拉列表 默认情况下 使用数据验证选项我们只能在单元格列表中看到单列值 但我想从两个不同的列填充列表 请看下面的示例表 Example Table Column A Column B Sr 1 Product On
  • .setFormula() 并收到错误缺少 ) 参数列表

    I have setFormula 并坚持这一点 我认为问题在于逗号 在发布这个问题之前 我研究了几个在线论坛 但没有运气 也许这里有人可以帮助我 我确实知道使用的规则 and 这就是为什么我尝试了几个公式 但仍然收到错误消息 参数列表后缺
  • 根据标准在多个需求之间分配数量

    我正在创建一个周期盘点表 表 1 将是用户输入 其中将放置找到的材料和数量 表 2 是盘点时的库存快照 我希望将找到的材料数量分配到表 2 上的数量中 直到表 1 的数量用完为止 按照从最新批次 日期代码 到最旧批次 先进先出 的顺序分配数
  • 将活动工作表作为电子邮件附件从 Google 工作表发送

    我有一个谷歌表单 可以捕获电子表格中的响应 目前 每次做出新响应时 它都会创建一个新工作表 我现在尝试将 邮寄活动工作表脚本 添加到创建新工作表的现有脚本中 但是我收到错误 请求失败https docs google com spreads
  • 将数据从 Google Drive 中的 CSV 文件导入到 Google Sheet

    我使用 SAS 每 24 小时生成两个 CSV 文件 我使用 bat 脚本将生成的 CSV 文件保存在 Google Drive 的文件夹中 CSV 文件被替换 因此文件夹中始终只有这两个文件 CSV 文件以 分隔 并且仅包含三列或四列 我
  • 谷歌表格根据今天的日期隐藏行

    在 Google Sheets 中 当 A 列中的日期等于或早于今天的日期时 我需要一个脚本来自动隐藏工作表 1 中的行 因此 如果今天是 2018 年 8 月 29 日 单元格 A3 中的日期是 2018 年 8 月 28 日 则第 3
  • Google电子表格脚本创建特定范围内的数据验证

    我正在尝试这个脚本来创建数据验证 但它总是不起作用 function test validation var Spread SpreadsheetApp getActiveSpreadsheet var Sheet Spread getSh
  • 将按钮添加到 Google 表格并在单击时为单元格设置值

    我是 Google 脚本的新手 我有一个包含 5 列的 Google 表格 在每一列上我需要一个按钮 带有文本1 2 3 4 5 在每个按钮上单击我需要将按钮文本设置为相应的单元格并隐藏单击的按钮 是否可以 您可以插入看起来像按钮的图像 然
  • 谷歌电子表格中的“MMMM yy”日期

    我有一个谷歌电子表格 其中我想要一个仅包含月份和年份名称的日期 例如September 2011 而且我还希望月份和年份能够轻松更改 有没有办法获得自定义日期格式来做到这一点 我发现我可以这样做 TEXT 40295 MMMM yy 但是日
  • 如何求Google电子表格中每列的最大值之和?

    我有一个谷歌数字电子表格 如何从每列中获取最大值 并仅使用one公式 没有临时单元 没有脚本 1 2 1 0 1 3 0 2 0 对于上表 结果应为 6 1 2 3 每列的最大值 但我想要一个也适用于更大的表的解决方案 作为一个更普遍的问题
  • 从 Google 电子表格接收实时更新

    我正在尝试设置与 Google 电子表格的双向同步 我可以使用其数据集将更改推送到 Google 电子表格Google 表格 API V4 https developers google com sheets 现在 我希望每当有人实时或近实
  • 在 Google 表格中创建每周/每月/每年折线图,以汇总同一周/月/年范围内的金额

    我想创建一个代表两列数据的折线图 F 输入日期 和 H 美元金额 X 轴应为日期 Y 轴应为美元金额 问题是我希望折线图上的日期代表给定周 月或年输入的所有金额的总和 这张照片是 YouTube 分析的 它创建了一个与我想在工作表中创建的类
  • 如何在Google工作表中添加类似于Excel中的表单控件滚动条的水平滚动条?

    我想添加一个水平滚动条 它将根据其位置提供 0 365 的值 并使用该值进行计算 我正在创建一个甘特图 与页面上的相同https www vertex42 com ExcelTemplates excel gantt chart html
  • Crypto-Js 库的 hmac-256 脚本返回函数结构而不是 Google Apps 脚本中的值,在外部工作正常吗?

    我正在设置一个谷歌电子表格项目来连接到我的 CryptoExchange API 但是当涉及到这个简单的 CryptoJs Hmac sha256 脚本时 它不起作用 它返回函数结构而不是值 而在外部它工作正常 看我的jsfiddle ht

随机推荐

  • Chartjs饼图,径向位移(偏移)

    Chartjs 2 是否支持饼图部分的径向位移 偏移 Chart js 本身无法像这样切出一块 但你总是可以定义您自己的图表类型 http www chartjs org docs advanced usage writing new ch
  • UIViewContentModeScaleAspectFit iphone sdk 提供质量差的图像

    希望快一点吗 我正在创建一个自定义 uitableviewcell 并添加了一个图像视图 我有一些尺寸约为 200x200 的 PNG 图像 我想创建一个缩略图以放入表格视图中 但是当我调整图像大小时 会导致图像质量较差 I use UIV
  • React 组件的推断泛型类型

    Typescript 对于推断泛型类型非常有用 例如 如果我编写以下代码 class AwesomeClass
  • Android 键盘打开时防止文档重排/浏览器调整大小

    这是针对 HTML5 Javascript Web 应用程序 而不是本机 Android 应用程序 当 android 软键盘打开时 如何防止浏览器 DOM 调整我的内容大小 响应式 主要是 vw vh 大小等 发生的情况是 一旦打开键盘
  • 如何将 .sks 文件添加到现有 Swift/Sprite-Kit 项目?

    我开始遵循 Ray Wenderlich 的 太空入侵者 教程 但分歧很大 我现在有 3 个 SKScene 我的标题屏幕 我的主游戏屏幕和我的最终关卡 游戏结束屏幕 我添加了标题屏幕和游戏结束场景 它们都有 sks 文件 主游戏屏幕没有
  • Javascript:控制 Google Chrome 打开选项卡音频音量控制

    有没有办法程序化联盟无论 Web 应用程序是如何设计的 HTML5 音频元素还是 Flash 等 我想要控制选项卡上的音频级别吗 只是为了明确起见 我不打算研究网页中的某些 id 元素 或其他任何内容 而是像 Chrome ThisAudi
  • Python 中的文件排序

    我想根据数值对 Python 中的文件进行排序 我的输入文件如下所示 66135 A 65117 B 63301 C 63793 D 输出应该是 63301 C 63793 D 65117 B 66135 A 怎么做 f2 writelin
  • Solr 使用 contains 进行搜索,听起来像

    问题 我在 solr 中有一个电影信息 两个字符串字段定义电影标题和导演姓名 复制字段定义 solr 默认搜索的另一个字段 我想要像谷歌一样的搜索 范围有限 如下所示 如何实现它 1 如何在solr中搜索包含 例如 a 如果电影导演的名字是
  • VS 2008 中的包装程序集密钥文件设置在哪里?

    我正在尝试构建一个强命名的应用程序 它引用了我通过 添加引用 对话框添加的 COM 互操作库 已经有一段时间了 但我似乎记得在旧版本的 Visual Studio 中 有一个项目设置包装组件密钥文件 我在 Visual Studio 200
  • Java Stream:查找具有属性最小/最大值的元素

    我有一个对象流 我想找到具有某些属性最大值的对象 而计算成本很高 作为一个具体的简单示例 假设我们有一个字符串列表 我们想要找到最酷的一个 给定一个coolnessIndex功能 以下应该有效 String coolestString st
  • glTexImage2D 与 gluBuild2DMipmaps

    非常基本的 OpenGL 纹理创建代码 int width height BYTE data FILE file open texture data file fopen filename rb if file NULL return 0
  • 使用 API 平台允许 json 中存在 NULL 值

    我目前拥有该实体 我想展示我的财产firedDate在我的 JSON 中 该值甚至为 null ApiResource normalizationContext groups employee ApiFilter DateFilter cl
  • 平滑 ggplot2 中的 geom_tile 地图 - 插值数据

    I m trying to plot an spatial map from a lon lat data set Following the example in https stackoverflow com a 19339663 70
  • 从主线程终止辅助线程(可可)

    我正在 cocoa 框架的帮助下开发一个用 Objective C 编写的小型应用程序 但遇到了多线程问题 如果有人可以帮助我提供一些关于如何从主线程终止辅助 工作 线程的指导 我将非常感激 IBAction startWorking id
  • Discord js / 检查用户是否在特定语音频道中

    我希望我的机器人使用 const voiceChannel message member voice channel const voiceChannelID message member voice channelID if voiceC
  • 列出从文件输入中选择的文件

    我想列出从文件输入中选择的文件 div class fileUpload myButton span Upload span div
  • VS2012 nmake 使用 v110_xp 工具集?

    有没有办法使用v110 xp使用 nmake 编译时的工具集 而不是默认的 v110 我正在尝试为 VisualStudio2012 编译 Qt5 库 并且我也需要它在 Windows XP 计算机上工作 我已经成功地使用 VS2012 和
  • 调用函数而不等待它

    你好 我想知道是否有一种方法可以调用函数 方法 最好是Python或Java 并继续执行而不等待它 Example def a b call a function b return something def b something tha
  • 在运行时替换 QWidget 对象

    在我的应用程序中 我必须用自定义的 QLineEdit 替换所有 QLineEdit 元素 为此 有不同的解决方案 修改从 pyuic4 生成的 py 文件 并将所有 QLineEdit 对象替换为我的一个 LineEdit 这个解决方案并
  • Google Spreadsheet API v4 使用“ApiKey”在电子表格中“添加行”

    我正在尝试使用 Google Spreadsheet API v4 直接使用 ApiKey 在电子表格中 添加行 而不使用 OAuth 2 0 如果我使用 OAuth 2 0 它成功 添加行 但我的要求是使用 ApiKey 参考了这个网址