Что-то не так в обновлении моих данных через Google Sheets API - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу обновить данные своих листов Google через API Google Sheets.Похоже, подключиться к серверу Google и отправить запрос успешно.Но мои данные Google не обновлялись.И ответ: result.updatedCells не определен.Где я ошибся?

function listMajors(auth) {
    var body = {
        values: [["2"]]
    };
    sheets.spreadsheets.values.update({
        spreadsheetId: '{MyGoogleSheetsId}',
        range: "table2!K2"+"?valueInputOption=RAW",
        majorDimension:'ROWS',
        auth: auth,
        resource: body
    }, function(err, result) {
        if(err)
            console.log(err);
        else 
            console.log('updateRange: '+result.updatedRange);
            console.log('updatedCells: '+result.updatedCells);
            console.log('updatedRows '+result.updatedRows);
        });
    }
}

Значение ответа диапазона в порядке, но ответ другого не определен Хотя сервер получил мой запрос.Мои листы Google все еще не обновляются.

1 Ответ

0 голосов
/ 17 ноября 2018

Как насчет этой модификации?

Точки модификации:

  • Пожалуйста, укажите свойство majorDimension для объекта ресурса.
  • Пожалуйста, измените range: "table2!K2"+"?valueInputOption=RAW",
  • Вы можете получить результат с помощью result.data.

Модифицированный скрипт:

function listMajors(auth) {
  var body = {
    majorDimension: "ROWS", // Added
    values: [["2"]],
  };
  sheets.spreadsheets.values.update({
    spreadsheetId: '{MyGoogleSheetsId}',
    range: "table2!K2", // Modified
    valueInputOption: "RAW", // Modified
    auth: auth,
    resource: body,
  }, function(err, result) {
    if (err) {
      console.log(err); // or console.log(err.errors);
      return;
    }
    console.log('updateRange: '+result.data.updatedRange); // Modified
    console.log('updatedCells: '+result.data.updatedCells); // Modified
    console.log('updatedRows '+result.data.updatedRows); // Modified
  });
}

Примечание:

  • Это изменениеСценарий предполагает следующие моменты.
    • Ваша среда может обновить электронную таблицу с помощью API Sheets. Объявлено
    • sheets.
  • Если это не помогло, попробуйтеэто с последней версией googleapis?

Ссылка:

В моемсреда, я подтвердил, что этот модифицированный скрипт работаетЕсли это не сработало в вашей среде, извините.

Редактировать:

В моей среде я подтвердил, что измененный скрипт работает нормально, используя googleapis версии 27.0.0 ипоследняя версия (35.0.0).К сожалению, я не смог воспроизвести вашу ситуацию.Поэтому я хотел бы предложить другой метод.

Пример сценария:

Этот сценарий обновляет электронную таблицу с использованием метода values.update Sheets API.Этот скрипт использует auth вашего скрипта.При использовании этого сценария измените сценарий в listMajors(auth) на следующий сценарий.

function listMajors(auth) {
  const request = require('request');

  const spreadsheetId = '{MyGoogleSheetsId}';
  const range = "table2!K2";
  auth.getRequestHeaders()
  .then(function(e) {
    var body = {
      majorDimension: "ROWS",
      values: [["2"]],
    };
    var options = {
      uri: `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${range}?valueInputOption=RAW`,
      method: "put",
      headers: e,
      json: body,
    };
    request(options, function(err, res, result){
      if (err) {
        console.log(err);
        return;
      }
      console.log(result);
    });
  });
}
...