Pregunta

Estoy tratando de aprender cómo utilizar la API de Google Spreadsheets través de la Guía del Desarrollador: Java. Mi aplicación puede autenticarse en el servicio de hojas de cálculo, recuperar un feed a base de hoja de cálculo y crear una tabla. El siguiente paso sería la creación de un registro de la tabla de lo que estoy tratando de hacer. Mi problema es cuando corro la aplicación obtengo este error:

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.

Esta es la parte de código para la creación de la tabla:

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

entrada:

entry = spreadsheets.get(0);

Al parecer, el problema proviene de:

myService.insert(tableFeedUrl, entryToChange);

pero no estoy seguro y no entiendo por qué ...

Gracias por su ayuda.

¿Fue útil?

Solución

He encontrado la solución. Contesto mi propia pregunta para los que van a tener el mismo problema.

Yo uso:

myService.insert(tableFeedUrl, entryToChange);

"corresponde" a tableFeedUrl:

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

Este no es el enlace de la derecha para acceder a la tabla ( el doc ).

Sin embargo, en los desarrolladores Java guiar aviso de que tenemos que utilizar:

myService.insert(recordFeedUrl, entryToChange);

resultados "recordFeedUrl" de:

URL recordFeedUrl = tableEntry.getRecordFeedUrl();

Pero el método: getRecordFeedUrl () no existe ... ( el doc )

La solución es crear manualmente la URL:

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

Así las URL corresponde a la tabla:

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

"60" corresponde al número de la tabla.

espero que le ayudará!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top