“未知名称“”:必须是根元素。” Node.js Google电子表格出现错误

时间:2019-08-09 00:38:36

标签: javascript node.js google-sheets-api

我正在使用Discord机器人将信息读/写到单个Google Spreadsheet,因此,我一直在尝试学习文档记录薄的Spreadsheet API。我已经弄清楚了如何一一追加,读取和删除行。我正在尝试通过将其单元格值更改为vals[1]中的值来编辑行。

这使用了Google Spreadsheets API v4和Node.js v10.13.0。这个sheets.spreadsheets.update方法结构是直接从Google的Node.js示例中复制的。当然,我只为所有参数插入了自己的值。我已经到处寻找我遇到的特定类型的错误。我还仔细检查了API可能存在的问题。

vals = [number, [cell1, cell2, undefined]];
sheets.spreadsheets.values.update({
  spreadsheetId: config.spreadsheet,
  range: sheetNames[sheet] + '!A' + vals[0] + ':B',
  resource: vals[1],
  valueInputOption: 'RAW',
}, (err, result) => {
  if (err) {
    console.log(err);
  } else {
    message.channel.send('**Successful `edit` request!**')
    //other code
  }
});

很明显,代码在请求中引发了错误。它应该顺利进行到“成功编辑请求”消息。

{ Error: Invalid JSON payload received. Unknown name "": Root element must be a message.
    at Gaxios.<anonymous> ( [other files]/node_modules/gaxios/build/src/gaxios.js:73:27)
    at Generator.next (<anonymous>)
    at fulfilled ([other files] /Personal Projects/siracha/node_modules/gaxios/build/src/gaxios.js:16:58)
    at process._tickCallback (internal/process/next_tick.js:68:7)

1 个答案:

答案 0 :(得分:2)

  • 您想使用带有Node.js的googleapis放置值。
  • 您已经能够使用Sheets API放置和获取值。

如果我的理解是正确的,那么该修改如何?请为resource使用一个对象,为values使用二维数组

发件人:

resource: vals[1],

收件人:

resource: {values: [vals[1]]},

注意:

  • 在您的价值观中,我认为您可以使用range: sheetNames[sheet] + "!A" + vals[0],代替range: sheetNames[sheet] + "!A" + vals[0] + ":B",

参考:

如果这不是解决方案,我深表歉意。