6

Voilà comment je crée la feuille de calcul:Comment puis-je créer la première ligne d'une nouvelle feuille de calcul Google à l'aide de l'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); 

Maintenant, je veux écrire la première ligne en elle.

Mais malheureusement, tous les appels d'API se basent sur le fait qu'il y a déjà une première ligne, pour vous insérer des paires nom-valeur (où le nom est le titre que je veux créer). http://code.google.com/apis/spreadsheets/data/3.0/developers_guide.html#CreatingTableRecords

Des idées comment je peux créer la première ligne? Celui qui définit les noms de champs.

+0

Cela modifie la taille de la feuille de calcul. https://developers.google.com/google-apps/spreadsheets/#modifying_a_worksheets_title_and_size – eddyparkinson

+0

Les documents officiels sont ici - Mise à jour [ou création] de plusieurs cellules avec une requête par lots: https://developers.google.com/google-apps/ spreadsheets/# updating_multiple_cells_with_a_batch_request – jpillora

Répondre

14

Finaly l'a trouvé. Vous devez le faire cellule par cellule:

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

Merci c'était vraiment utile :) – user381878

+1

Aidé beaucoup !!!!!!!!!! – Dhrupal

+0

Je veux montrer l'en-tête comme MOnth-Year mais quand je mets la valeur comme août 2014 il la convertit en date comme 1/8/2014. Toute solution ? –

1

Je ne l'ai pas essayé, mais il me semble que ce qui est décrit dans la section « Création d'une table »:

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); 

Plus précisément, la partie tableEntry.setHeader(new Header(1)) semble que cela crée un en-tête sur la première rangée. Ensuite, tableData.setStartIndex(2) semble indiquer que les données ne doivent pas aller dans la première rangée (puisque c'est l'en-tête). Enfin, tableData.addColumn(new Column("A", "Column A")) semble ajouter une colonne qui serait étiquetée dans l'en-tête.

+0

Hé, ça a l'air de prommissing! Je vais essayer lundi. THX! – JochenJung

+1

Hmm .. non :-(Il est dit "Spreadsheets crée une nouvelle table La table n'est pas visible dans l'interface graphique, mais vous pouvez l'utiliser avec l'API de données." Je voudrais également voir la feuille de calcul dans Google Docs, donc ce n'est pas l'option – JochenJung

+0

L'interface graphique de l'application ne fait-elle pas référence à l'interface graphique? L'API GData ne fonctionne que sur des données synchronisées avec le serveur, ce qui signifie qu'elle ne présentera pas de tableau à l'utilisateur. mémoire – Kroltan