有没有办法使用Python访问Google Sheet的版本历史记录?

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

我使用 gspread 但如果另一个库这样做,我也可以使用它

我在研究中找不到方法

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

您可以使用以下命令

pip install --upgrade google-api-python-client
pip install --upgrade google-auth-httplib2
pip install --upgrade google-auth-oauthlib
或按照 Drive API 快速入门中快速入门中的第一步来使用 Google 的 API 客户端库。

将使用以下方法:

  • Revisions.list 方法,文档位于 Revision.list 参考,列出文件的所有可用修订版本。
  • Revisions.get 方法,文档位于 Revisions.get 参考,以获取有关特定修订的信息,或下载二进制文件的修订。

如本文档中所述 下载并发布文件修订版 您可以非常轻松地下载修订版。对于我们的目标,Google 云端硬盘中有两种不同类型的文件:

  • 二进制文件,使用 Google Drive API v3,您可以使用 Revisions.get 方法,并将

    alt
    参数设置为
    media
    您将下载该特定修订版,使用以下方式获取可用修订版列表Revisions.list 方法,这只适用于二进制文件,与用户编辑时自动获取新修订的文档编辑器文件不同,如果使用 Google Drive for Desktop 同步较新的版本,则二进制文件将具有修订(以前称为 Drive FileStream)。

  • 文档编辑器文件,这些文件的过程略有不同。默认情况下,当您使用 Revisions.list 方法 时,您将获得有关可用修订版的少量信息,使用

    fields
    参数,您可以请求
    exportLinks
    获取可用修订版。

在Python中,以快速入门代码示例为基础,并将代码示例替换为

    try:
        service = build('drive', 'v3', credentials = credentials)
        results = service.revisions().list(
            fileId='The file ID',
            fields='revisions(id,exportLinks)'
        ).execute()

        revisions = results.get('revisions', [])

        for revision in revisions:
            print(revision)

    except HttpError as error:
        # TODO(developer) - Handle errors from gmail API.
        print(f'An error occurred: {error}')

这是一个示例,说明文档编辑器文件的纯 JSON 格式的 API 响应如何。根据您有兴趣获取的文件,您将需要使用相应的链接。

{
  "kind": "drive#revisionList",
  "revisions": [
    {
      "id": "1",
      "exportLinks": {
        "application/rtf": "SOME_URL",
        "application/vnd.oasis.opendocument.text": "SOME_URL",
        "text/html": "SOME_URL",
        "application/pdf": "SOME_URL",
        "application/epub+zip": "SOME_URL",
        "application/zip": "SOME_URL",
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "SOME_URL",
        "text/plain": "SOME_URL",
      }
    },
    { <-> },
    { <-> },
    { <-> }
  ]
}

请记住,对于二进制文件,您需要首先列出可用的修订版本,然后在获得修订版本 ID 后使用 Revisions.get 方法


0
投票

我还使用类似的 python 代码通过 api 客户端 json 更新我的 google 表格。代码计划每天早上运行一次。然而,当我查看谷歌表格中的版本历史记录时,每 15 分钟就有一个版本。我的服务电子邮件 ID 似乎对工作表进行了一些更改。知道如何解决这个问题吗?

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