google for files example csv google-drive-sdk google-spreadsheet

for - Cargue CSV a la hoja de cálculo de Google Drive con la API de Drive v2



google drive api upload file example (5)

¿Cómo puedo cargar un archivo CSV local en Google Drive utilizando Drive API v2 para que el archivo cargado se encuentre en el formato nativo de Google Spreadsheet ? Preferiblemente en Python, pero una solicitud HTTP sin procesar será suficiente.

Lo que probé:

  1. cuerpo de solicitud tipo-contenido: ''application / vnd.google-apps.spreadsheet'', media_body content-type: ''text / csv''. -> 401 Mala solicitud

  2. cuerpo de solicitud tipo de contenido: ''application / vnd.google-apps.spreadsheet'', media_body content-type: ''application / vnd.google-apps.spreadsheet''. -> 400 Solicitud incorrecta

  3. ... (un par de otros como dejar una propiedad y similares, por lo general obtuvieron 400 o Drive no lo reconoció como una hoja de cálculo nativa)


Java:

//Insert a file File body = new File(); body.setTitle("CSV"); body.setDescription("A test document"); body.setMimeType("text/csv"); java.io.File fileContent = new java.io.File("document.csv"); FileContent mediaContent = new FileContent("text/csv", fileContent); Insert insert = service.files().insert(body, mediaContent); insert.setConvert(true); File file = insert.execute(); System.out.println("File ID: " + file.getId());



La respuesta de Claudio Cherubino es correcta: debe agregar el parámetro manualmente. Sin embargo, dado que preguntaste en Python, aquí hay un ejemplo concreto:

body = { ''mimeType'':''text/csv'', ''title'': ''title'' } # service: your authenticated service # media: your apiclient.http.MediaFileUpload object, with ''text/csv'' mimeType req = service.files().insert(media_body=media, body=body) # patch the uri to ensure conversion, as the documented kwarg seems to be borked. # you may need to use ''?convert=true'' depending on the uri, not taking that into # account here for sake of simplicity. req.uri = req.uri + ''&convert=true'' # now we can execute the response. resp = req.execute() # should be OK assert resp[''mimeType''] == u''application/vnd.google-apps.spreadsheet''


(Mar 2017) Tenga en cuenta que, aunque la pregunta específicamente sobre Drive API v2, los desarrolladores deben saber que el equipo de la API de Google Drive lanzó v3 a finales de 2015, y en esa versión, insert() cambió los nombres para create() para reflejar mejor la operación de archivo. Tampoco hay más indicador de conversión: solo debes especificar MIMEtypes ... ¡imagínate!

La documentación también se ha mejorado: ahora hay una guía especial dedicada a las cargas (simple, multiparte y reanudable) que viene con código de muestra en Java, Python, PHP, C # /. NET, Ruby, JavaScript / Node.js, y iOS / Obj-C para cargar un archivo y otro que importa un archivo CSV como una hoja de Google.

Para mostrar que es sencillo, a continuación se muestra una solución alternativa de Python (para la muestra en los documentos) para archivos cortos ("carga simple") donde no necesita la clase apiclient.http.MediaFileUpload . Este fragmento asume que su código de autenticación funciona donde su punto final del servicio es DRIVE con un alcance de autenticación mínimo de https://www.googleapis.com/auth/drive.file .

# filenames & MIMEtypes DST_FILENAME = ''inventory'' SRC_FILENAME = DST_FILENAME + ''.csv'' SHT_MIMETYPE = ''application/vnd.google-apps.spreadsheet'' CSV_MIMETYPE = ''text/csv'' # Import CSV file to Google Drive as a Google Sheets file METADATA = {''name'': DST_FILENAME, ''mimeType'': SHT_MIMETYPE} rsp = DRIVE.files().create(body=METADATA, media_body=SRC_FILENAME).execute() if rsp: print(''Imported %r to %r (as %s)'' % (SRC_FILENAME, DST_FILENAME, rsp[''mimeType'']))