2010-08-23 16 views
1

J'essaie d'apprendre à utiliser l'API Google Spreadsheets via le Guide du développeur: Java. Mon application peut s'authentifier auprès du service de tableurs, récupérer un flux basé sur une feuille de calcul et créer une table. La prochaine étape serait de créer un enregistrement de table ce que j'essaie de faire. Mon problème est quand je lance l'application que j'obtiens cette erreur:Création d'un enregistrement de table - API Google Spreadsheets

Service failure 
com.google.gdata.util.InvalidEntryException: Bad Request 
[Line 1, Column 429, element entry] Required extension element http://schemas.google.com/spreadsheets/2006:header not found. 

Ceci est la partie de code pour la création de la table:

//Creating a table record 
String nameValuePairs = "Column A=Rosa"; 
RecordEntry entryToChange = new RecordEntry(); 
// Split first by the commas between the different fields. 
for (String nameValuePair : nameValuePairs.split(",")) { 
    // Then split by the equal sign. 
    String[] parts = nameValuePair.split("=", 2); 
    String name = parts[0]; // such as "name" 
    String value = parts[1]; // such as "Fred" 

    entryToChange.addField(new Field(null, name, value));   
} 
try { 
    myService.insert(tableFeedUrl, entryToChange); 
} catch (IOException e) { 
    System.err.println("I/0 problem"); 
    e.printStackTrace(); 
} catch (ServiceException e) { 
    System.err.println("Service failure"); 
    e.printStackTrace(); 
} 

tableFeedUrl:

tableFeedUrl = factory.getTableFeedUrl(entry.getKey()); 
entrée

:

entry = spreadsheets.get(0); 

App arently le problème vient de:

myService.insert(tableFeedUrl, entryToChange); 

mais je ne suis pas sûr et je ne comprends pas pourquoi ...

Merci pour votre aide.

+0

Pourriez-vous s'il vous plaît aider ici: http://stackoverflow.com/questions/4883123/how-do-you-access-spreadsheet-service-using-a-java-client –

+0

Pouvez-vous utiliser cela pour "insérer une ligne dans une feuille de calcul Google "plutôt que de simplement ajouter de nouvelles lignes à la fin. Voir http://stackoverflow.com/questions/14209079/insert-a-row-in-to-google-spreadsheet-using-the-api-with-java – eddyparkinson

Répondre

2

J'ai trouvé la solution. Je réponds à ma propre question pour ceux qui auront le même problème.

J'utilise:

myService.insert(tableFeedUrl, entryToChange); 

"tableFeedUrl" correspond à:

http://spreadsheets.google.com/feeds/<key>/tables/ 

ce n'est pas le lien droit d'accès à la table (the doc).

Mais dans le Java developers guide il est un avis que nous devons utiliser:

myService.insert(recordFeedUrl, entryToChange); 

résultats "recordFeedUrl" de:

URL recordFeedUrl = tableEntry.getRecordFeedUrl(); 

Mais la méthode: getRecordFeedUrl() n'existe pas ... (the doc)

la solution consiste à créer manuellement l'adresse URL:

recordFeedUrl = new URL(table.getId().toString().replace("tables", "records")); 

Ainsi, l'URL correspond à la table:

https://spreadsheets.google.com/feeds/<key>/records/60 

"60" correspond au numéro de table.

J'espère que cela aidera!