【问题标题】:How can I get a list of sheets (name and "gid") in a Google spreadsheet using the Drive API?如何使用 Drive API 在 Google 电子表格中获取工作表列表(名称和“gid”)?
【发布时间】:2015-12-15 00:37:32
【问题描述】:

我正在尝试使用 Google Drive API (Python) 下载电子表格文件的一些选项卡。 文件元数据中是否包含 gids 信息? 我想做的是(这可能不正确,请提出建议:)):

file_metadata = self.service.files().get(file_id=file_id).execute()
# in the following line, how can I get a download url with a gid (a tab in a spreadsheet file)
download_url = file_metadata.get('exportLinks')['text/csv']
# download the file.

谢谢:)

【问题讨论】:

标签: python python-2.7 google-drive-api google-api-python-client


【解决方案1】:

确实,这似乎是 How to convert Google spreadsheet's worksheet string id to integer index (GID)? 的副本

这里是快速回答:

def to_gid(worksheet_id):
    return int(worksheet_id, 36) ^ 31578

【讨论】:

  • 这似乎不再起作用(可能是由于新的谷歌电子表格)。例如,omlf5j6 的 worksheet_id 使用此方法给我 53609033112,而实际 gid 为 1366234904
【解决方案2】:

您可以使用 Google Apps 脚本中的电子表格服务来执行此操作。虽然不如直接 API 调用方便,但至少可以:

  1. 调用SpreadsheetApp.openById(id) 方法以使用云端硬盘file_id 打开电子表格。
  2. 调用Spreadsheet.getSheets() 方法检索Sheet 对象列表。
  3. 对于每个工作表,调用Sheet.getSheetId()Sheet.getSheetName() 方法来获取名称(这是电子表格用户看到的)和sheetId(这是导出时需要在gid= 参数中提供的) .

您可以使用最近发布的Apps Script Execution API 为您的 Apps 脚本项目提供 REST API,然后您可以以与 Drive API 类似的方式调用该 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多