【问题标题】:trying to append row google sheets api试图附加行 google sheet api
【发布时间】:2016-09-15 02:34:37
【问题描述】:

我一直试图让附加行示例工作几个小时,但没有成功,我没有收到任何错误,但我的电子表格根本没有更新。

https://developers.google.com/sheets/samples/writing#append_values

function insertInSpreadSheet(sheetId, sheetService) {
var body = {
    "range": "Sheet1",
    majorDimension: "ROWS",
    "values": [
        ["Item", "Cost", "Stocked", "Ship Date"],
        ["Wheel", "$20.50", "4", "3/1/2016"],
        ["Door", "$15", "2", "3/15/2016"],
        ["Engine", "$100", "1", "30/20/2016"],
        ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
    ]
}

var params = {
    spreadsheetId: sheetId,
    "range": "Sheet1",
    valueInputOption: "USER_ENTERED",
    media: {
        body: body  
    }
};
sheetService.spreadsheets.values.append(params, function(err, res) {
    if(err){
        console.log(err);
        return;
    }
    console.log(res);
    return;
});
}//end function

回复:

{ 
    spreadsheetId: '1NvBbTlET7G5yhuuFF6zj-7LQUQ9TI85_geviRLuzCD0',
    updates: { 
        spreadsheetId: '1NvBbTlET7G5yhuuFF6zj-7LQUQ9TI85_geviRLuzCD0',
        updatedRange: 'Sheet1!A1' 
    } 
}

我错过了什么吗?

编辑

我的电子表格完全是空的

【问题讨论】:

  • 这看起来像是更新的响应,而不是追加的响应。可能是 node.js 客户端错误地调用了错误的 HTTP 方法。你确定你打电话给sheetService.spreadsheets.values.*append*?你能追踪这导致的实际 HTTP 方法吗?如果有,是什么?
  • 是的,我没有做错客户
  • 您的代码会生成哪些 HTTP URL?

标签: node.js google-sheets-api


【解决方案1】:

Node.js 客户端库需要一个名为 resource 的参数中的请求正文。请参阅以下示例:

sheets.spreadsheets.values.append({
  spreadsheetId: spreadsheetId,
  range: 'Sheet1',
  valueInputOption: 'USER_ENTERED',
  resource: body,
}, function (err, response) {
  // ...
});

【讨论】:

    【解决方案2】:

    答案对我不太有用...

      // file comes from drive.files.list
      // sheet comes from sheets.spreadsheets.get
      const rows = [['1','2',3/* , ... */]]; 
      const request = {
        spreadsheetId: file.id,
    
        range: sheet.title,  // TODO: Update placeholder value.
    
        valueInputOption: 'USER_ENTERED',
    
        insertDataOption: 'INSERT_ROWS',  // TODO: Update placeholder value.
    
        resource: {
          values: rows
        }
      };
    
      sheets.spreadsheets.values.append(request, function (err, response) {
       // ...
    

    【讨论】:

      【解决方案3】:

      我就是这样做的,对我来说效果很好。

      //将行写入工作表

      const { name, email, phone, city, pin, nick } = req.body;
      
      await googleSheets.spreadsheets.values.append({
          auth,
          spreadsheetId,
          range: "test1!A:E",
          valueInputOption: "USER_ENTERED",
          resource: {
               values: [
                   [name, email, phone, city, pin, nick]
               ],
      
          }
      })
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      【解决方案4】:

      我看到的唯一区别是该示例包含您正在更新的工作表的范围:

        "range": "Sheet1!A1:E1",
      

      【讨论】:

        【解决方案5】:

        对于 Google API v4,您的请求应该可以这样格式化:

        requests.push({
        appendCells: {
          sheetId: 2063764471,
          fields: '*',
          rows: [{
            values: [{ // First Row
              userEnteredValue: {stringValue: "first row"}
            }, {
              userEnteredValue: {numberValue: 2}
            }, {
              userEnteredValue: {numberValue: 3}
            }]
          }]
        }});
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-05
          • 1970-01-01
          • 2021-04-02
          相关资源
          最近更新 更多