无法修改Google驱动器上存在的XLSX 修改点:修改后的脚本:注意:参考文献:

问题描述

我使用此简单功能从本地PC成功将.xlsx上传到了Google驱动器。 我使用的模仿类型应将.xlsx转换为普通的Google工作表

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()

它给了我这个错误

返回“此文档不支持此操作“>

当尝试使用gspread时,也会出现此错误

gspread.exceptions.APIError:{'代码':400,'消息':'此文档不支持此操作','状态':'FAILED_PRECONDITION'}

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

解决方法

我相信您的目标如下。

  • 您要通过转换为Google Spreadsheet的方式上传XLSX文件。
  • 您想使用适用于python的googleapis实现此目标。

修改点:

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

修改后的脚本:

请进行以下修改,然后再次进行测试。

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

注意:

  • 当将其导出为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))
    

参考文献:

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...