Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 如何将数据记录到指定列的最后一行而不是所有列?_Google Sheets - Fatal编程技术网

Google sheets 如何将数据记录到指定列的最后一行而不是所有列?

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

目前,我的脚本正在根据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.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);