使用 api 在 google 电子表格中特定列的末尾附加一个新单元格(行)

Append a new cell (row) at the end of specific column in google spreadsheet using api

无法找到在 google sheets 到 v4 APIs 的特定列末尾追加数据的方法。

我知道我们可以使用 Append API 添加一个全新的行:https://developers.google.com/sheets/api/samples/writing#append_values

但这会从第一列开始添加一个全新的行。我只需要 push/append 从特定列开始的数据。

我正在做的sheet如下:

现在我需要在“类别”列中添加多个类别,例如“Ca1”和“Cat2”。我知道我可以传递数据而不是 filled/edited 列作为空值,如:

"majorDimension": "ROWS",
"values": [ 
           [null,"Cat1",null]
           [null,"Cat2",null]
          ]

但在此之后,如果下次我需要仅使用相同的格式将数据附加到标签列(比如 Tag1、Tag2),结果 sheet 将变为:

"majorDimension": "ROWS",
    "values": [ 
               [null,null,"Tag1"]
               [null,null,"Tag2"]
              ]

因此,一旦数据变得庞大,如果没有解决方案,像 C6 单元格之间的空白空间将会增加。我只需要像这样维护数据(仅按列)。

是否有任何解决方案可以在特定列的末尾追加数据?

假设:

  • sheet 是一个 sheet 对象(例如 SpreadsheetApp.getActive().getSheetByName("Sheet1");),

  • C(3)是你要粘贴数据的列,

  • CC1 和最后一个 C[= 之间没有空单元格43=] 含内容的值。

  • data 具有以下格式:

    data = [ 
                ["Tag1"]
                ["Tag2"],
                ...
               ]
    

那么你可以使用这个通用表达式:

const cSize=sheet.getRange('C:C').getValues().filter(String).length; 

sheet.getRange(cSize+1,3,data.length,1).setValues(data);

其中 getRange(row, column, numRows, numColumns).

您可以使用现有值确定下一个空单元格,然后从那里定义您的范围。

  1. 获取列values
GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/C:C
  1. 响应是一个 ValueRange,其中包含一个值数组。值得庆幸的是,“不会包括空的尾随行和列”,因此您可以利用它来发挥自己的优势。
var lastRow = ValueRange.values.length;
  1. 指定新范围,仅选择 C ​​列中的下一个空单元格
var range = 'Sheet1!C' + (lastRow+1);
  1. 发送您的 update 请求
Sheets.Spreadsheets.Values.update(
  {
    'majorDimension': 'COLUMNS',
    'values': [['Tag1']]
  },
  spreadsheetId,
  range, 
  { valueInputOption: 'USER_ENTERED' }
);