Как отправить тело запроса на обновление? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь ввести данные в лист 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, которые сделали эту документацию настолько бесполезной, и поэтому я обращаюсьпереполнение стека, чтобы найти кого-то, кто-нибудь, кто сделал это недавно и может направить меня к точным ресурсам.Спасибо.

1 Ответ

0 голосов
/ 02 апреля 2019

Хорошо, поэтому самая точная документация существует на здесь . Если вы настроите его таким образом, он будет работать, даже если выдает ошибку. Насколько я могу судить, у Google есть одна попытка / отлов для запроса и обратного вызова, поэтому обратный вызов вызывает ошибку, и в ответ Google вызывает обратный вызов с ошибкой, предполагая, что ошибка произошла откуда-то еще в Попробуйте утверждение, как в ответе. Google, возьми себя в руки. Это ужасно.

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