Creación de hojas de cálculo vacías en Google Drive usando Drive API

Quiero crear una hoja de Google vacía (creada solo con metadatos) en Google Drive. Cuando me referí a la documentación de Google SpreadSheet API , dice que use la API DocumentsList, pero está en desuso y en su lugar me pide que use la API de Google Drive. En los documentos de Drive API, no pude encontrar ninguna forma de crear una hoja vacía. ¿Alguien tiene una pista sobre cómo hacer esto?

Puede hacer esto usando la API de Drive configurando el tipo MIME en application/vnd.google-apps.spreadsheet :

Para hacer esto en Python:

 from apiclient.discovery import build service = build('drive', 'v2') import httplib2 credentials = ... # Obtain OAuth 2.0 credentials http = credentials.authorize(httplib2.Http()) body = { 'mimeType': 'application/vnd.google-apps.spreadsheet', 'title': 'Name of Spreadsheet', } file = service.files().insert(body=body).execute(http=http) # or for version 3 it would be # file = service.files().create(body=body).execute(http=http) 

¡Dirígete al Explorador de API de Google para probarlo!

(Jul 2016) La respuesta anterior de BossyLobster sigue siendo válida (ya que Drive API v2 no ha quedado en desuso [todavía]). Sin embargo, a continuación hay formas más modernas de hacer lo mismo y algunos videos para ayudar a comprender:

Placa de autorización de autorización para los dos ejemplos a continuación

 from apiclient import discovery from httplib2 import Http from oauth2client import file, client, tools store = file.Storage('storage.json') creds = store.get() if not creds or creds.invalid: flow = client.flow_from_clientsecrets('client_secret.json', SCOPES) creds = tools.run_flow(flow, store) 

NOTA: para crear su proyecto de API y sus credenciales de OAuth2, así como para descargar esas credenciales en el client_secret.json (o client_id.json ), vaya a la Consola de desarrolladores de Google .

  • Para aprender a usar la Consola de Desarrolladores, vea este video .
  • Para ver este código de autorización, vea este video . (NOTA: la placa de arriba es un poco más reciente / mejorada con respecto al código en el video)
  • Para obtener una introducción al uso de Google Drive API v2 (que incluye sus archivos de Drive), vea este video .
  • Para obtener más información acerca de Google Drive API v3 (subir / descargar archivos), vea este blogpost y video . (NOTA: v2 y v3 en vivo lado a lado … v2 no está en desuso todavía; v3: menos llamadas a API, mejor rendimiento en comparación con v2)
  • Para obtener información sobre la API de Google Sheets v4 (migración de datos SQL a una hoja), consulte este blogpost & video .

Crear una hoja nueva / en blanco con la API de Google Drive v3 (& v2)

 # above: SCOPES = 'https://www.googleapis.com/auth/drive.file' DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http())) data = { 'name': 'My new Sheet', 'mimeType': 'application/vnd.google-apps.spreadsheet', } sheet = DRIVE.files().create(body=data).execute() # insert() for v2 

Crear hoja nueva / en blanco con Google Sheets API v4

 # above: SCOPES = 'https://www.googleapis.com/auth/spreadsheets' SHEETS = discovery.build('sheets', 'v4', http=creds.authorize(Http())) data = {'properties': {'title': 'My new Sheet'}} sheet = SHEETS.spreadsheets().create(body=data).execute() 

Ahora puede preguntar: “¿Por qué hay dos formas diferentes de crear una hoja en blanco?” Para decirlo de manera sucinta, la API de Hojas de cálculo está diseñada principalmente para operaciones orientadas a hojas de cálculo, es decir, insertar datos, leer filas de hojas de cálculo, formatear celdas, crear gráficos, agregar tablas dinámicas, etc., no solicitudes orientadas a archivos como crear / eliminar e importar / export, donde la API de Drive es la correcta de usar. Da la casualidad de que crear es una especie de ambos, de ahí que haya dos formas de hacerlo.

La referencia de la API para crear una hoja de cálculo se encuentra en https://developers.google.com/sheets/reference/rest/v4/spreadsheets/create .

El fragmento de código para crear una nueva hoja de cálculo es el siguiente.

 String[] SCOPES = { SheetsScopes.SPREADSHEETS }; GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2( getApplicationContext(), Arrays.asList(SCOPES)).setBackOff(new ExponentialBackOff()); credential.setSelectedAccountName("your_google_account@gmail.com"); HttpTransport transport = AndroidHttp.newCompatibleTransport(); JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); com.google.api.services.sheets.v4.Sheets service = new com.google.api.services.sheets.v4.Sheets.Builder( transport, jsonFactory, credential) .setApplicationName("Google Sheets API Android Quickstart") .build(); Spreadsheet spreadsheet = new Spreadsheet(); SpreadsheetProperties properties = new SpreadsheetProperties(); properties.setTitle("SpreadSheetTitle"); spreadsheet.setProperties(properties); service.spreadsheets().create(spreadsheet).execute() 

Los métodos propuestos no funcionaron para mí, pero el siguiente código funciona:

 # requires: uid='example@gmail.com', pass1='password', # name_spr='name_of_spreadsheet' import gdata.docs.client docs_client = gdata.docs.client.DocsClient() docs_client.ClientLogin(uid, pass1, 'any') document = gdata.docs.data.Resource(type='spreadsheet', title=name_spr) resource = docs_client.CreateResource(document) full_id = resource.resource_id.text # returned by gdata gs_id = full_id[len('spreadsheet:'):] 

También puedes probar la biblioteca de pygsheets que escribí. Por supuesto, ofrece más funciones que solo crear hojas de cálculo.

 import pygsheets gc = pygsheets.authorize(outh_file='client_secret.json') # Open spreadsheet and then worksheet gc.create('my new sheet')