【问题标题】:Adding row to Google Sheet with Nodejs使用 Nodejs 向 Google Sheet 添加行
【发布时间】:2019-02-18 10:50:28
【问题描述】:

我有以下表格

我正在使用这个 nodejs 模块google-spreadsheet 我可以阅读、编辑单元格。没问题。但是当我尝试添加一行时,我收到了这个错误。

sheet #1: Sheet22 1000x26
Error: HTTP error 400 (Bad Request) - Blank rows cannot be written; use delete instead.

我在寻找答案,他们都是关于编辑标题的吗?但我似乎无法理解这里缺少什么,因为标题已经存在。

非常感谢!

这是我的代码

saveTransaction: function(transaction){
        var creds = require('./credentials.json');
        var doc = new GoogleSpreadsheet('xxxxxxxx');
        doc.useServiceAccountAuth(creds, function (err) {
          if (err) console.log(err);
          doc.getInfo(function (err, info) {
            console.log('Loaded doc: ' + info.title + ' by ' + info.author.email);
            sheet = info.worksheets[21];
            console.log('sheet #1: ' + sheet.title + ' ' + sheet.rowCount + 'x' + sheet.colCount);

            var newrow = {
                title: 'banana',
                type: 'fruit',
                url: 'http://example.com'
            };
            doc.addRow(17, newrow, function( err, rows ){
                if (err) console.log(err);
                console.log(rows);

              });

          })
        })
    },

【问题讨论】:

  • 您在此处显示的代码不会尝试添加空白行,而是尝试添加具有值的行。另请注意,您的示例工作表有一个重复的列标签,而您添加的行内容有一个键--type--您的工作表没有。这可能是用户错误,因为您指定的键与目标工作表的标题不匹配。
  • 您应该查看您正在使用的库的代码:github.com/theoephraim/node-google-spreadsheet/blob/… 实际的官方Sheets REST API 支持插入空白行。 (并且有node.js documentation
  • 你的第一个参数17doc.addRow() 似乎很奇怪。工作表的 AFAIK id 是 oh6fgn3 形式的字符串。 (您可以通过doc.getInfo() api 调用将它们放入info.worksheets[] 数组中)。我敢打赌,错误消息是红鲱鱼,并且您的工作表 ID 无效。

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


【解决方案1】:

我在这里看到了一些可能的问题。一种是您添加到doc 而不是sheet。这可能有用——我不熟悉这部分——但如果它对其他人有帮助,我已经使用它来工作了

sheet.addRow(newrow, function( err, rows ){

改为。

其次,更有可能的是,当我的列未设​​置为与我尝试添加的键匹配时,我收到了这个确切的错误消息。当它们都不匹配时,它会给出关于空行的错误。

例如:

doc.addWorksheet({headers: ['A', 'B', 'C']}, function(addWorksheetErr, newSheet) {
  if (addWorksheetErr) console.error(addWorksheetErr);
  else {
    newSheet.addRow({ A: 1, B: 'two', C: 3 }, function(addRowErr, row) {
      // this works fine
    });
    newSheet.addRow({ X: 4, Y: 'five', Z: 6 }, function(addRowErr, row) {
      // This will get the "Blank rows cannot be written; use delete instead"
      // error, because there's no A, B, or C in the row data.
    });
  }

【讨论】:

    【解决方案2】:

    GoogleSpreadsheet.addRow(worksheet_id, new_row, callback)

    检查worksheet_id

    look this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多