Google sheets 如何将数据记录到指定列的最后一行而不是所有列?
目前,我的脚本正在根据A、B列中最后一个输入的位置将值记录到E中。是否有方法防止这些间隙Google sheets 如何将数据记录到指定列的最后一行而不是所有列?,google-sheets,Google Sheets,目前,我的脚本正在根据A、B列中最后一个输入的位置将值记录到E中。是否有方法防止这些间隙 var sss = SpreadsheetApp.openById('sampleID'); var ss = sss.getSheetByName('Forecast data'); var range = ss.getRange('B126'); const now = new Date(); const data = range.getValues().map(row => row.c
var sss = SpreadsheetApp.openById('sampleID');
var ss = sss.getSheetByName('Forecast data');
var range = ss.getRange('B126');
const now = new Date();
const data = range.getValues().map(row => row.concat(now));
var tss = SpreadsheetApp.openById('sampleID2');
var ts = tss.getSheetByName('Archived Data');
ts.getRange(ts.getLastRow()+1, 5,1,2).setValues(data);
}
试试这样的方法:
ts.getRange(getLastRow(ts,5)+1,5,1,2)。设置值(数据)代码>
下面是getLastRow\uU4()
函数的副本:
/**
* Gets the position of the last row that has visible content in a column of the sheet.
* When column is undefined, returns the last row that has visible content in any column.
*
* @param {Sheet} sheet A sheet in a spreadsheet.
* @param {Number} columnNumber Optional. The 1-indexed position of a column in the sheet.
* @return {Number} The 1-indexed row number of the last row that has visible content.
*/
function getLastRow_(sheet, columnNumber) {
// version 1.5, written by --Hyde, 4 April 2021
const values = (
columnNumber
? sheet.getRange(1, columnNumber, sheet.getLastRow() || 1, 1)
: sheet.getDataRange()
).getDisplayValues();
let row = values.length - 1;
while (row && !values[row].join('')) row--;
return row + 1;
}
另一种查找方法是通过filter()
代码:
样本数据:
输出:
注:
- 当列之间没有空白单元格时,这种方法很好。跳过单元格时,它将无法正确计算
lastRow
,可能会覆盖数据。但只要你的专栏中没有空白,这就很好了
资源:
// Sample data to be iserted
data = [[2.4, '5/5/2021']]
var tss = SpreadsheetApp.openById(sampleID2);
var ts = tss.getSheetByName('Archived Data');
// get values on column E and filter the cells with values and get their length
var column = ts.getRange("E1:E").getValues();
var lastRow = column.filter(String).length;
ts.getRange(lastRow + 1, 5, 1, 2).setValues(data);