Создание записи в таблице - Google Spreadsheets API - PullRequest
1 голос
/ 24 августа 2010

Я пытаюсь научиться использовать API Google Spreadsheets с помощью Руководства разработчика: Java.Мое приложение может проходить проверку подлинности в службе электронных таблиц, получать ленту на основе рабочего листа и создавать таблицу.Следующим шагом будет создание записи в таблице, что я пытаюсь сделать.Моя проблема, когда я запускаю приложение, я получаю эту ошибку:

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.

Это часть кода для создания таблицы:

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

запись:

entry = spreadsheets.get(0);

Видимо, проблема в том, что:

myService.insert(tableFeedUrl, entryToChange);

но я не уверен и не понимаю, почему ...

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 25 августа 2010

Я нашел решение.Я отвечаю на свой вопрос для тех, у кого будет такая же проблема.

Я использую:

myService.insert(tableFeedUrl, entryToChange);

"tableFeedUrl" соответствует:

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

это неправильная ссылка для доступа к таблице ( документ ).

Но в руководстве разработчика Java это уведомление, которое мы должны использовать:

myService.insert(recordFeedUrl, entryToChange);

"recordFeedUrl" получается из:

URL recordFeedUrl = tableEntry.getRecordFeedUrl();

Но метод: getRecordFeedUrl () не существует ... ( документ )

Решениечтобы создать вручную URL:

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

Таким образом, URL соответствует таблице:

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

"60" соответствует номеру таблицы.

Я надеюсь, что этопоможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...