#python #google-api #google-sheets-api #xlsx #gspread
#python #google-api #google-sheets-api #xlsx #gspread
Вопрос:
Я успешно загрузил файл .xlsx со своего локального компьютера на 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()
Это выдает мне эту ошибку
возвращено «Эта операция не поддерживается для этого документа»>
Также при попытке использовать gspread это выдает мне эту ошибку
gspread.исключения.Ошибка ApiError: {‘code’: 400, ‘message’: ‘Эта операция не поддерживается для этого документа’, ‘status’: ‘FAILED_PRECONDITION’}
Я хочу отредактировать этот файл .xlsx на Google диске, а затем снова экспортировать его как .xlsx на локальный диск
Ответ №1:
Я считаю, что ваша цель заключается в следующем.
- Вы хотите загрузить файл XLSX, преобразовав его в электронную таблицу Google.
- Вы хотите достичь этого с помощью googleapis для python.
Точка модификации:
- В этом случае, как насчет включения mimeType электронной таблицы Google в метаданные файла?
Модифицированный скрипт:
Пожалуйста, измените следующим образом и протестируйте его снова.
От:
file_metadata = {'name': filename,'parents': [FOLDER_ID]}
Для:
file_metadata = {'name': filename, 'parents': [FOLDER_ID], 'mimeType': 'application/vnd.google-apps.spreadsheet'}
- С помощью вышеуказанного изменения возвращенный идентификатор файла может использоваться в качестве электронной таблицы 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))
Ссылки:
Комментарии:
1. @Hanna Nabil Спасибо за ответ. Я рад, что ваша проблема была решена.