首页 > 解决方案 > “未知名称”:必须是根元素。Node.js Google 电子表格出错

问题描述

我正在使用不和谐的机器人将信息读/写到单个 Google 电子表格,因此我一直在尝试学习文档记录不佳的电子表格 API。我已经弄清楚如何一一追加、读取和删除行。我正在尝试通过将其单元格值更改为vals[1].

这使用 Google 电子表格 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)

标签: javascriptnode.jsgoogle-sheets-api

解决方案


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

如果我的理解是正确的,那么这个修改呢?请使用对象resource并使用二维数组values

从:

resource: vals[1],

至:

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

笔记:

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

参考:

如果这不是解决方案,我很抱歉。


推荐阅读