Я пытаюсь научиться использовать API таблиц Google с помощью Руководства разработчика: 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);
но я не уверен и не понимаю почему ...
Спасибо за вашу помощь.
Я нашел решение. Отвечаю на свой вопрос тем, у кого будет такая же проблема.
Я использую:
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» соответствует номеру таблицы.
Надеюсь, это поможет!