Я пытаюсь ввести данные в лист Google, используя пакет googleapis nodejs.Я использую код быстрого запуска, который они дают вам в качестве шаблона, и я изо всех сил пытаюсь выяснить, какова правильная форма для объекта «запрос» в функции sheet.spreadsheets.values.update.
IМожно было бы подумать, что это будет легко выяснить, но документация неясна и противоречива.
Вот что говорится на вкладке node.js на странице spreadsheet.values.update в листах Google .Документация API
В соответствии с этой страницей объект запроса должен выглядеть следующим образом:
var request = {
// The ID of the spreadsheet to update.
spreadsheetId: 'my-spreadsheet-id', // TODO: Update placeholder value.
// The A1 notation of the values to update.
range: 'my-range', // TODO: Update placeholder value.
// How the input data should be interpreted.
valueInputOption: '', // TODO: Update placeholder value.
resource: {
// TODO: Add desired properties to the request body. All existing properties
// will be replaced.
},
auth: authClient,
};
Range, spreadsheetID и valueInputOption довольно просты.У меня нет проблем с ними.Однако «объект ресурса» слишком расплывчатый.Я без понятия что это значит.В небольшом примере запроса на правой боковой панели страницы вы можете отредактировать «тело запроса», указав ему все значения в этом запросе, а затем атрибут values , который представляет собой вложенный массивзначения, которые вы хотели бы обновить, и это работает, но не показывает фактический ввод, который вы должны внести в API узла (что имеет смысл, поскольку он не специфичен для узла)
Я думал о том, чтобы поместить атрибут «values» внутри объекта «resources», который просто имел вложенный массив, как я и ожидал.Это не работает.все, что он делает, это возвращает TypeError: Cannot read property 'length' of undefined
.Если вы развернете его из объекта «resources» и просто отправите значения в качестве его собственного атрибута, вместо этого вы получите Error: Invalid JSON payload received. Unknown name "values": Cannot bind query parameter. Field 'values' could not be found in request message.
Кроме того, после этой строки auth: authClient
относится к устаревшему коду, аутентификация выполненатеперь при создании объекта листа, который дал мне подсказку о внесении изменений, которые еще не отражены во всех частях документации.
Я подумал, что, возможно, будет более подробная информация оgithub документация по самому пакету googleapis, в котором есть пример кода для добавления к электронной таблице, в которой используется атрибут с именем requestBody
, например:
const res = await sheets.spreadsheets.values.append({
spreadsheetId,
range,
valueInputOption: 'USER_ENTERED',
requestBody: {
values: [
['Justin', '1/1/2001', 'Website'],
['Node.js', '2018-03-14', 'Fun'],
],
},
});
Это не 'я не могу включить объект resources
, как в примере на странице документации листов API, и когда вы пытаетесь запустить его, он не работает, отвечая Error: Invalid JSON payload received. Unknown name "requestBody[values]": Cannot bind query parameter. Field 'requestBody[values]' could not be found in request message.
. На данный момент я чувствую, чтоДолжно быть, недавно что-то изменилось в библиотеке и / или API, которые сделали эту документацию настолько бесполезной, и поэтому я обращаюсьпереполнение стека, чтобы найти кого-то, кто-нибудь, кто сделал это недавно и может направить меня к точным ресурсам.Спасибо.