我设置了一个Google工作表,以便任何人都可以编辑。
我注意到在gspread
包中,您可以单独从链接中获取电子表格。例如:
sht1 = gc.open_by_key('1wj9L7Hn779GKP0s4MblkU1wHcqaVcG_E2YKAo1vdof0')
由于任何人都可以编辑,因此无需提供用于访问的身份验证代码。但是,似乎总是需要使用auth代码对其进行初始化。
是否有一种无需任何验证码即可编辑Google工作表的方法?
这可能与这篇文章Using gspread to read from a Google Drive Spreadsheet without logging in的副本有些混淆,但是,解决方案是让客户端提供其验证码,或者直接下载文件,但没有选择编辑文件的方法。
不幸的是,如果没有身份验证,您将无法获得想要的东西。是强制性的。
最后,如果您查看Gspread
,您可能会看到它实际上是在使用Gspread
。并且通过API,即使访问(例如您的情况)公共数据,也需要进行身份验证。
API中有Google Sheets API,但真诚的我不知道other ways to authenticate是否支持它们(我相信它们不受支持。
所以您可以使用在Gspread
中建议的一些解决方法。
如果我的理解是正确的,该解决方法如何?请认为这只是几种解决方法之一。
在此替代方法中,将使用服务帐户。使用服务帐户后,无需使用gspread登录Google帐户即可获取和放置Google Spreadsheet的值。
为了使用服务帐户访问Google Spreadsheet,请执行以下流程。
将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')
。### downloaded JSON file ###