Impossible de modifier XLSX existe sur Google Drive

Aug 29 2020

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

Tanaike Aug 29 2020 at 06:00

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