如何使用 csv 中的 Pydrive 从 Google Sheet 下载特定工作表 示例脚本:

问题描述

如果我需要使用 Python 和 pydrive 下载特定的谷歌表,我可以使用这样的简单命令:

drive.CreateFile({'id':'[sheetID]}).GetContentFile('file.csv',mimetype='text/csv')

这是可行的,但在这种情况下,我仅以 CSV 格式下载 Google 文件第一张工作表。

如果在这文件中有多个工作表并且我需要下载一个特定的工作表,也许是我可以在 URL 中看到的 ID“...edit#gid=111115555 ",我该如何更改命令?

不管这张纸的位置或名称,我都想下载它。

你能帮我吗?

提前致谢

解决方法

我相信你的目标如下。

  • 您想将 Google 电子表格中的特定表格下载为 CSV 数据。
  • 您想使用 pydrive 和 python 来实现您的目标。

很遗憾,我在pydrive中找不到直接实现目标的方法。因此,在这个答案中,我想提出一种解决方法来实现您的目标。在此变通方法中,访问令牌从 pydrive 的授权脚本中检索,并使用访问令牌直接请求端点。示例脚本如下。

示例脚本:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
import requests

# Script for authorization of pydrive.
gauth = GoogleAuth()
gauth.LocalWebserverAuth()

# Download the specific sheet in Google Spreadsheet as a CSV data.
spreadsheetId = '###' # Please set the Spreadsheet ID.
sheetId = '###' # Please set the sheet ID. (GID)
url = 'https://docs.google.com/spreadsheets/d/' + spreadsheetId + '/gviz/tq?tqx=out:csv&gid=' + sheetId
headers = {'Authorization': 'Bearer ' + gauth.credentials.access_token}
res = requests.get(url,headers=headers)
with open('file.csv','wb') as f:
    f.write(res.content)
  • 当上述脚本运行时,sheetId 电子表格中的 spreadsheetId 特定工作表将作为 CSV 数据下载并创建为文件。