在 python 中,是否可以在没有授权码的情况下编辑公开共享 google sheet?

In python, is it possible to edit a publicy shared google sheet, without an auth code?

我设置了一个 google sheet 以便任何人都可以编辑。

我注意到在 gspread 包中,您可以单独从 link 中获得价差 sheet。示例:

sht1 = gc.open_by_key('1wj9L7Hn779GKP0s4MblkU1wHcqaVcG_E2YKAo1vdof0')

由于任何人都可以编辑,因此无需提供访问授权码。但是,您似乎总是需要使用授权码对其进行初始化。

有没有办法在没有任何授权码的情况下编辑 google sheet?

这可能会与此 post 的副本混淆,但是,解决方案是让客户提供他们的授权码,或者直接下载文件,但没有编辑选项文件。

不幸的是,如果没有身份验证,您将无法获得想要的结果。是强制性的东西。

最后如果你看看Gspread you could see that is actually using the Google Sheets API。通过 API,即使在访问(如您的情况)public 数据时,您也需要进行身份验证。

和 API 但我真的不知道 Gspread 是否支持它们(我相信他们不支持)。

因此您可以使用 中提出的一些解决方法。

  • 您想编辑 Google 电子表格而不登录 Google 以检索授权码。
  • 您想通过 python.
  • 使用 gspread 来实现此目的
  • 您已经能够使用 API.API.
  • 获取和输入 Google 电子表格的值

如果我的理解是正确的,这个解决方法怎么样?请将此视为几种解决方法之一。

解决方法:

在此解决方法中,使用了服务帐户。使用服务帐户时,您可以获取和放置 Google 电子表格的值,而无需使用 gspread 登录 Google 帐户。

要使用服务帐户访问 Google 电子表格,请执行以下流程。

  1. 创建服务帐户并下载 JSON 文件以使用服务帐户。
  2. 将服务帐户的电子邮件地址分享到您要使用的 Google 电子表格。
    • 您可以在下载的 JSON 文件中看到电子邮件地址。

示例脚本:

使用sht1 = gc.open_by_key('1wj9L7Hn779GKP0s4MblkU1wHcqaVcG_E2YKAo1vdof0')脚本与服务帐号的示例脚本如下。

import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://www.googleapis.com/auth/spreadsheets']
credentials = ServiceAccountCredentials.from_json_keyfile_name('### downloaded JSON file ###', scope)
gc = gspread.authorize(credentials)

sht1 = gc.open_by_key('1wj9L7Hn779GKP0s4MblkU1wHcqaVcG_E2YKAo1vdof0')
  • 请设置### downloaded JSON file ###.

参考文献: