通过 Google 表格 API 更新我的数据时出现问题

Something wrong in update my data via Google Sheets API

我想通过 Google 表格 API 更新我的 Google 表格数据。 看起来连接到 Google 的服务器并成功发送请求。 但是我的 Google 表格数据没有更新。 response: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);
        });
    }
}

Value of response of range is OK, but response of other is undefined 虽然服务器已经收到我的请求。 我的 Google 表格仍然没有更新。

这个修改怎么样?

修改点:

  • 请将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 已声明。
  • 如果这不起作用,你能用最新版本的 googleapis 试试吗?

参考:

在我的环境中,我确认这个修改后的脚本有效。如果这在您的环境中不起作用,我很抱歉。

编辑:

在我的环境中,我确认修改后的脚本使用版本 27.0.0 和最新版本 (35.0.0) 的 googleapis 工作正常。不幸的是,我无法复制你的情况。所以我想提出其他方法。

示例脚本:

此脚本使用 Sheets API 的 values.update 方法更新电子表格。此脚本使用您脚本的 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);
    });
  });
}