Impossible de modifier XLSX existe sur Google Drive
J'ai téléchargé .xlsx avec succès depuis mon PC local vers Google Drive en utilisant cette fonction simple. Le type MIME que j'utilise doit convertir .xlsx en feuille google normale
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')
mais quand j'essaye de lire ou de modifier
mySpread=service_sheet.spreadsheets().get(spreadsheetId=spreadSheet_Id).execute()
Ça me donne cette erreur
renvoyé "Cette opération n'est pas prise en charge pour ce document">
Aussi, lorsque j'essaye d'utiliser gspread, cela me donne cette erreur
gspread.exceptions.APIError: {'code': 400, 'message': 'Cette opération n'est pas prise en charge pour ce document', 'status': 'FAILED_PRECONDITION'}
Je veux modifier ce .xlsx sur le lecteur Google, puis l'exporter à nouveau en .xlsx sur le lecteur local
Réponses
Je crois que votre objectif est le suivant.
- Vous souhaitez télécharger un fichier XLSX en le convertissant en feuille de calcul Google.
- Vous souhaitez y parvenir en utilisant googleapis pour python.
Point de modification:
- Dans ce cas, que diriez-vous d'inclure le mimeType de la feuille de calcul Google dans les métadonnées du fichier?
Script modifié:
Veuillez le modifier comme suit et le tester à nouveau.
De:file_metadata = {'name': filename,'parents': [FOLDER_ID]}
À:
file_metadata = {'name': filename, 'parents': [FOLDER_ID], 'mimeType': 'application/vnd.google-apps.spreadsheet'}
- Par la modification ci-dessus, l'ID de fichier renvoyé peut être utilisé comme feuille de calcul Google.
Remarque:
Lorsque vous l'avez exporté en tant que fichier XLSX, veuillez utiliser la méthode "Fichiers: exportation" comme suit.
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))
Références:
- Fichiers: créer
- Fichiers: export