无法修改 google 驱动器上存在的 XLSX

Can't modify XLSX exists on google drive

我使用这个简单的功能将 .xlsx 从我的本地 PC 成功上传到 google 驱动器。 我正在使用的 mimetype 应该将 .xlsx 转换为正常 google sheet

def writeToGDrive(filename):
    file_metadata = {'name': filename,'parents': [FOLDER_ID]}
    media = MediaFileUpload(filename,mimetype='application/vnd.openxmlformats- 
    officedocument.spreadsheetml.sheet', resumable=True)
    file = service.files().create(body=file_metadata,media_body=media,fields='id').execute()
    return file.get('id')

但是当我尝试阅读或编辑时

mySpread=service_sheet.spreadsheets().get(spreadsheetId=spreadSheet_Id).execute()

它给我这个错误

returned "This operation is not supported for this document">

此外,当尝试使用 gspread 时,它给我这个错误

gspread.exceptions.APIError: {'code': 400, 'message': 'This operation is not supported for this document', 'status': 'FAILED_PRECONDITION'}

我想在 google 驱动器上编辑此 .xlsx,然后将其再次导出为 .xlsx 到本地驱动器

我相信你的目标如下。

  • 您想通过转换为 Google 电子表格来上传 XLSX 文件。
  • 您想使用 python 的 googleapis 实现此目的。

修改点:

  • 在这种情况下,如何在文件元数据中包含 Google 电子表格的 mimeType?

修改后的脚本:

请修改如下,重新测试

从:
file_metadata = {'name': filename,'parents': [FOLDER_ID]}
到:
file_metadata = {'name': filename, 'parents': [FOLDER_ID], 'mimeType': 'application/vnd.google-apps.spreadsheet'}
  • 通过上述修改,返回的文件ID可以用作Google电子表格。

注:

  • 当您将其导出为XLSX文件时,请使用如下“文件:导出”的方法。

      request = service.files().export_media(fileId=fileId, mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
      fh = io.FileIO('exportedSample.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))
    

参考文献: