如何使用Google App脚本获取Google表格中特定列的最后一个单元格?

时间:2018-11-30 06:56:26

标签: javascript google-apps-script google-sheets spreadsheet

我想向特定列的最后一行添加内容。
例如,我的Google工作表的当前状态为

x  A            B          C
1  value1ofA    value1ofB  value1ofC
2  value2ofA    value2ofB  value2ofC
3               value3ofB  value3ofC
4                          value4ofC

有时候我想在C列中添加值value5ofC
有时我想在B列中添加值value4ofB
有时我想在A列

中添加值value3ofA

我知道如何使用范围在单个单元格中插入值

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];
sheet.getRange(5, 5).setValue('value5ofC') // This will set content at cell of 5th row and 5th column

在此示例代码中,我知道C列最后一个单元格的位置,如果要使其自动化,我想找出最后一个单元格的位置,以便可以用一些内容填充它。

我可以使用sheet.getLastRow()找出整张纸的最后一行,但是我想要特定列的最后一行。

如何找到任何列的最后一个单元格的位置?

1 个答案:

答案 0 :(得分:2)

  • 您要检索工作表中每列的最后一行的数量。

如果我对您的问题的理解是正确的,那么该答案如何?我认为针对您的情况有几种解决方案。因此,请考虑其中的3个。

模式1:

在此示例脚本中,它通过给出列字母来检索特定列的最后一行。作为示例,将检索“ C”列的最后一行。

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];

var col = "C"; // Please input the column letter.
var res = sheet.getRange(col + ":" + col).getValues().filter(String).length;
Logger.log(res)

将此脚本用于示例表时,将返回4。

模式2:

在此示例脚本中,它检索所有列的最后一行。首先,检索单元的所有值。然后,对包含值的数组进行转置,并检索最后一行。

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];

var values = sheet.getDataRange().getValues();
var res = values[0].map(function(_, i) {return values.map(function(r) {return r[i]}).filter(String).length});
Logger.log(res)

将此脚本用于示例表时,将返回[2.0, 3.0, 4.0]的数组。在这种情况下,数组的索引表示列索引。因此,在这种情况下,列“ A”,“ B”和“ C”的最后一行分别表示2、3和4。

模式3:

模式1和2可以用于该表中该列的所有单元格都填充有值。从您的样本表中,我提出了以上两种模式。但是,如果要检索包含空单元格的列的最后一行,则可以使用以下脚本。

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];

var col = "C";
var values = sheet.getRange(col + ":" + col).getValues();
var lastRow;
for (var i = values.length - 1; i >= 0; i--) {
  if (values[i][0]) {
    lastRow = i + 1;
    break;
  }
}
Logger.log(lastRow)

参考文献:

如果我误解了您的问题,请告诉我。我想修改它。