6

Éste es cómo crear la hoja de cálculo:¿Cómo creo la primera línea en una nueva hoja de cálculo de Google con la API?

DocsService client= new DocsService ("idea"); 
client.useSsl(); 
client.setOAuthCredentials (oauthParameters, new OAuthHmacSha1Signer()); 

DocumentListEntry newEntry= new com.google.gdata.data.docs.SpreadsheetEntry(); 
newEntry.setTitle (new PlainTextConstruct ("GIdeaDB")); 
DocumentListEntry insertedEntry= client.insert (new URL (
    "https://docs.google.com/feeds/default/private/full/?xoauth_requestor_id="+ userEmail), newEntry); 

Ahora quiero escribir la primera línea en el mismo.

Pero desafortunadamente todas las llamadas a API se basan en el hecho de que ya hay una primera línea para insertar pares de nombre-valor (donde el nombre es el título que quiero crear). http://code.google.com/apis/spreadsheets/data/3.0/developers_guide.html#CreatingTableRecords

¿Alguna idea de cómo puedo crear la primera línea? El que define los nombres de los campos.

+0

Esto cambia el tamaño de la hoja de trabajo. https://developers.google.com/google-apps/spreadsheets/#modifying_a_worksheets_title_and_size – eddyparkinson

+0

Documentos oficiales aquí: actualización [o creación] de varias celdas con una solicitud por lotes: https://developers.google.com/google-apps/ hojas de cálculo/# updating_multiple_cells_with_a_batch_request – jpillora

Respuesta

14

Finaly lo encontró. Debe hacerlo celda por celda:

oauthParameters= new GoogleOAuthParameters(); 
    oauthParameters.setOAuthConsumerKey (CONSUMER_KEY); 
    oauthParameters.setOAuthConsumerSecret (CONSUMER_SECRET); 
    oauthParameters.setOAuthType (OAuthType.TWO_LEGGED_OAUTH); 
    oauthParameters.setScope ("https://spreadsheets.google.com/feeds/"); 

    SpreadsheetService spreadsheetService= new SpreadsheetService ("appname"); 
    spreadsheetService.useSsl(); 
    spreadsheetService.setOAuthCredentials (oauthParameters, 
    new OAuthHmacSha1Signer()); 

    URL feedUrl= new URL (
    "https://spreadsheets.google.com" 
     + "/feeds/spreadsheets/private/full?title=Spreadsheetname&xoauth_requestor_id=" 
     + userEmail); 

    SpreadsheetFeed resultFeed= spreadsheetService.getFeed (feedUrl, 
    SpreadsheetFeed.class); 

    List <SpreadsheetEntry> spreadsheets= resultFeed.getEntries(); 
    SpreadsheetEntry spreadsheetEntry= spreadsheets.get (0); 

    URL worksheetFeedUrl= spreadsheetEntry.getWorksheetFeedUrl(); 
    log.severe (worksheetFeedUrl.toString()); 
    WorksheetFeed worksheetFeed= spreadsheetService.getFeed (
    worksheetFeedUrl, WorksheetFeed.class); 

    List <WorksheetEntry> worksheetEntrys= worksheetFeed.getEntries(); 
    WorksheetEntry worksheetEntry= worksheetEntrys.get (0); 

    // Write header line into Spreadsheet 
    URL cellFeedUrl= worksheetEntry.getCellFeedUrl(); 
    CellFeed cellFeed= spreadsheetService.getFeed (cellFeedUrl, 
    CellFeed.class); 

    CellEntry cellEntry= new CellEntry (1, 1, "headline1"); 
    cellFeed.insert (cellEntry); 
    cellEntry= new CellEntry (1, 2, "headline2"); 
    cellFeed.insert (cellEntry); 
+0

Gracias fue realmente útil :) – user381878

+1

¡¡Ayudó mucho !!!!!!!!!! – Dhrupal

+0

Quiero mostrar el encabezado como MOnth-Year pero cuando pongo el valor como agosto-2014 lo convierte en una fecha como 1/8/2014. alguna solución ? –

1

Yo no lo he probado, pero me parece que se describe en la sección "Creación de una tabla":

TableEntry tableEntry = new TableEntry(); 

FeedURLFactory factory = FeedURLFactory.getDefault(); 
URL tableFeedUrl = factory.getTableFeedUrl(spreadsheetEntry.getKey()); 

// Specify a basic table: 
tableEntry.setTitle(new PlainTextConstruct("New Table")); 
tableEntry.setWorksheet(new Worksheet("Sheet1")); 
tableEntry.setHeader(new Header(1)); 

// Specify columns in the table, start row, number of rows. 
Data tableData = new Data(); 
tableData.setNumberOfRows(0); 
// Start row index cannot overlap with header row. 
tableData.setStartIndex(2); 
// This table has only one column. 
tableData.addColumn(new Column("A", "Column A")); 

tableEntry.setData(tableData); 
service.insert(tableFeedUrl, tableEntry); 

En concreto, la parte tableEntry.setHeader(new Header(1)) parece que crea un encabezado en el primera fila. Entonces, tableData.setStartIndex(2) parece especificar que los datos no deben ir en la primera fila (ya que es el encabezado). Finalmente, tableData.addColumn(new Column("A", "Column A")) parece agregar una columna que se etiquetaría en el encabezado.

+0

¡Oye, eso parece prometedor! Voy a probarlo el lunes. ¡Gracias! – JochenJung

+1

Hmm .. no :-(Dice "Las hojas de cálculo crean una nueva tabla. La tabla no está visible en la GUI, pero puede operar con la API de datos." También me gustaría ver la hoja de cálculo en Google Docs, entonces esta no es la opción – JochenJung

+0

¿La GUI no sería la GUI de la aplicación? Dado que la API GData opera solo en datos sincronizados con el servidor. Simplemente significa que no mostrará una tabla al usuario, simplemente la crea en memoria. – Kroltan

Cuestiones relacionadas