在python中,是否可以编辑公开共享的Google表格,而无需使用身份验证代码?

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

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

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

1
sht1 = gc.open_by_key('1wj9L7Hn779GKP0s4MblkU1wHcqaVcG_E2YKAo1vdof0')

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

是否有一种无需任何身份验证代码即可编辑Google表格的方法?

这可能与本文的重复部分相混淆。使用gspread无需登录即可从Google云端硬盘电子表格中读取内容,但是解决方案是让客户端提供其身份验证代码,或直接下载文件,但不能选择编辑文件。


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

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

解决方法:

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

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

  • 创建服务帐户并下载JSON文件以使用该服务帐户。
  • 将服务帐户的电子邮件地址共享到您要使用的Google Spreadsheet。

    • 您可以在下载的JSON文件中查看电子邮件地址。
  • 示例脚本:

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

    1
    2
    3
    4
    5
    6
    7
    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 ###

    参考:

    • 使用OAuth 2.0进行服务器到服务器的应用程序
    • 创建一个G Suite服务帐户


    不幸的是,如果没有身份验证,您将无法满足您的需求。是必须的。

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

    还有其他通过API进行身份验证的方法,但是真诚的我不知道Gspread是否支持它们(我相信它们不受支持)。

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