【问题标题】:Can't modify XLSX exists on google drive无法修改谷歌驱动器上存在的 XLSX
【发布时间】:2020-08-28 22:18:10
【问题描述】:

我使用这个简单的功能成功地将 .xlsx 从我的本地 PC 上传到了谷歌驱动器。 我使用的 mimetype 应该将 .xlsx 转换为普通的谷歌表

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: {'code': 400, 'message': '此文档不支持此操作', 'status': 'FAILED_PRECONDITION'}

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

【问题讨论】:

    标签: python google-api google-sheets-api xlsx gspread


    【解决方案1】:

    我相信你的目标如下。

    • 您希望通过转换为 Google 电子表格来上传 XLSX 文件。
    • 您想使用 googleapis for python 来实现这一点。

    修改点:

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

    修改脚本:

    请进行如下修改并再次测试。

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

    注意:

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

    参考资料:

    【讨论】:

    • @Hanna Nabil 感谢您的回复。很高兴您的问题得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多