使用Google云端硬盘API从文件夹下载电子表格

德勒玛

我有一个Google驱动器存储库,我曾经在该存储库中上传了大量文件。这次,我想从该相同的存储库下载一些内容。

以下代码可用于下载带有file_id的文件:

DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

file_id = '23242342345YdJqjvKLVbenO22FeKcL'
  request = team_drive.DRIVE.files().get_media(fileId=file_id)
  fh = io.BytesIO()
  downloader = MediaIoBaseDownload(fh, request)
  done = False
  while done is False:
       status, done = downloader.next_chunk()
       print ("Download %d%%." % int(status.progress() * 100))
  fh.seek(0)
  with open('test.csv', 'wb') as f:
       shutil.copyfileobj(fh, f, length=131072)

我想这样做,但是这次从文件夹下载文件。我尝试使用以下代码在指定文件夹中使用folder_id显示文件。但这是行不通的。

folder_id = '13223232323237jWuf3__hKAG18jVo'
results = team_drive.DRIVE.files().list(q="mimeType='application/vnd.google-apps.spreadsheet' and parents in '"+folder_id+"'",fields="nextPageToken, files(id, name)",pageSize=400).execute()

代码应该工作吗?我有一个空名单。任何贡献将不胜感激

Tanaike

我相信您的目标和情况如下。

  • 您要从共享云端硬盘中的特定文件夹以XLSX格式下载Google Spreadsheet,这是最新的修改时间。
  • 您想使用googleapis for python实现此目的。
  • 您已经可以使用Drive API下载文件。

为此,我想提出以下示例脚本。该脚本的流程如下。

  1. 从共享云端硬盘中的特定文件夹中检索最新的Google Spreadsheet。
    • 为此,我使用 results = DRIVE.files().list(pageSize=1, fields="files(modifiedTime,name,id)", orderBy="modifiedTime desc", q="'" + folder_id + "' in parents and mimeType = 'application/vnd.google-apps.spreadsheet'", supportsAllDrives=True, includeItemsFromAllDrives=True).execute()
    • 这样,可以检索修改时间最近的Google Spreadsheet。
  2. 检索最新的Google Spreadsheet的文件ID。
    • 在这种情况下,results.get('files', [])[0]['id']是文件ID。
  3. 以XLSX格式下载Google Spreadsheet。
    • 在这种情况下,DRIVE.files().export_media(fileId=file_id, mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')被使用。

使用上述流程时,示例脚本如下。

示例脚本:

folder_id = "###"  # Please set the folder ID.

DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

results = DRIVE.files().list(pageSize=1, fields="files(modifiedTime,name,id)", orderBy="modifiedTime desc", q="'" + folder_id + "' in parents and mimeType = 'application/vnd.google-apps.spreadsheet'", supportsAllDrives=True, includeItemsFromAllDrives=True).execute()
items = results.get('files', [])
if items:
    file_id = items[0]['id']
    file_name = items[0]['name']
    request = DRIVE.files().export_media(fileId=file_id, mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    fh = io.FileIO(file_name + '.xlsx', mode='wb')
    downloader = MediaIoBaseDownload(fh, request)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        print('Download %d%%.' % int(status.progress() * 100))

注意:

  • 从您的脚本中,我无法正确了解DRIVEteam_drive.DRIVE在这种情况下DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http())),我使用from DRIVE如果无法使用,请进行修改。

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用客户端API在Google云端硬盘应用数据文件夹中创建Google表格电子表格

使用Google云端硬盘中的Google Spreadsheets API创建电子表格

从Android上的Google云端硬盘下载Google表格电子表格

写入Google云端硬盘电子表格

从Appengine访问Google云端硬盘电子表格

创建链接以从Google云端硬盘下载整个电子表格

验证到Google云端硬盘并使用Python urllib2 / requests下载电子表格

Google Apps脚本-在= IMAGE()电子表格公式中使用云端硬盘中文件的网址

使用gspread无需登录即可读取Google云端硬盘电子表格

下载 Google 电子表格 Google API PHP

如何允许访问写入Google云端硬盘电子表格的Google Web应用

使用Python从Google文档下载电子表格

按类别分类的总数据-Excel / Google云端硬盘电子表格

在Ruby on Rails中访问Google云端硬盘电子表格

重命名电子表格中的Google云端硬盘图像

Google云端硬盘电子表格和日历邀请来宾

无法使用python通过Google Drive API下载Google电子表格

Google Sheets API:创建电子表格或将电子表格移动到文件夹中

使用Google Sheets API公开电子表格?

使用 google 电子表格 api 转义文本

如何使用Google Spreadsheet API在电子表格文件中插入超链接

突出显示字段,该字段在Google云端硬盘电子表格中具有已到期的日期

将电子表格打印为PDF,然后使用OAuth2将文件保存在云端硬盘中

下载公共Google电子表格

将电子表格从“下载”文件夹本地复制到其他电子表格的主表中

将完整的 Google 电子表格保存到文件夹的脚本

循环浏览文件夹下的所有子文件夹和文件,并将最后修改的日期信息写入Excel电子表格

如何使用电子表格重命名多个文件夹?

使用GSpread在文件夹中创建电子表格