在python中,无需授权码就可以编辑公共共享的Google工作表吗?

问题描述 投票:1回答:2

我设置了一个Google工作表,以便任何人都可以编辑。

我注意到在gspread包中,您可以单独从链接中获取电子表格。例如:

sht1 = gc.open_by_key('1wj9L7Hn779GKP0s4MblkU1wHcqaVcG_E2YKAo1vdof0')

由于任何人都可以编辑,因此无需提供用于访问的身份验证代码。但是,似乎总是需要使用auth代码对其进行初始化。

是否有一种无需任何验证码即可编辑Google工作表的方法?

这可能与这篇文章Using gspread to read from a Google Drive Spreadsheet without logging in的副本有些混淆,但是,解决方案是让客户端提供其验证码,或者直接下载文件,但没有选择编辑文件的方法。

python google-sheets gspread
2个回答
1
投票

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

最后,如果您查看Gspread,您可能会看到它实际上是在使用Gspread。并且通过API,即使访问(例如您的情况)公共数据,也需要进行身份验证。

API中有Google Sheets API,但真诚的我不知道other ways to authenticate是否支持它们(我相信它们不受支持。

所以您可以使用在Gspread中建议的一些解决方法。


0
投票
  • 您要编辑Google Spreadsheet而不登录Google来获取授权码。
  • 您想通过gspread和python实现此目的。
  • 您已经能够通过Sheets API获取和放置Google Spreadsheet的值。

如果我的理解是正确的,该解决方法如何?请认为这只是几种解决方法之一。

解决方法:

在此替代方法中,将使用服务帐户。使用服务帐户后,无需使用gspread登录Google帐户即可获取和放置Google Spreadsheet的值。

为了使用服务帐户访问Google Spreadsheet,请执行以下流程。

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

示例脚本:

question that you mentioned的脚本与服务帐户一起使用的示例脚本如下。

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')

参考:

© www.soinside.com 2019 - 2024. All rights reserved.