问题描述
我使用此简单功能从本地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))