我想向特定列的最后一行添加内容。
例如,我的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()
找出整张纸的最后一行,但是我想要特定列的最后一行。
如何找到任何列的最后一个单元格的位置?
答案 0 :(得分:2)
如果我对您的问题的理解是正确的,那么该答案如何?我认为针对您的情况有几种解决方案。因此,请考虑其中的3个。
在此示例脚本中,它通过给出列字母来检索特定列的最后一行。作为示例,将检索“ 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。
在此示例脚本中,它检索所有列的最后一行。首先,检索单元的所有值。然后,对包含值的数组进行转置,并检索最后一行。
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。
模式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)
如果我误解了您的问题,请告诉我。我想修改它。