Google 电子表格的时间戳(仅适用于填充行数据)

Timestamp for Google Spread Sheets (for only filled rows data)

在电子表格中,我想为预先选择的 (E20: N48) 行和列数据添加时间戳。

例如:如果Sheet-1的E20:E22单元格填充了一些数据,那么时间戳将设置为Sheet-的第1列单元格A2到单元格A4 2.同样,每次到最后一行的数据都会设置时间戳。

正如您在我的代码中看到的那样,29 被指定为最后一行,因此前 2 行充满了数据,但时间戳被设置为包括前 2 行在内的其余 28 行。

特别说明:我只想为填充数据的行添加时间戳。

这是我的代码:

function save() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sheet.getSheetByName('Sheet-1'); //sheetstore
  var data = sheet.getSheetByName('Sheet-2');
  var getValue = ss.getRange('E20:N48').getValues();
  var lastRow = data.getLastRow()+1;
  var updateTable = data.getRange(lastRow,2,29,10).setValues(getValue); //From column 2, total 29 column, total 10 rows

  //Timestamp for column 1
  var timestamp = Utilities.formatDate(new Date(), "GMT+6:00", "yyyy-MM-dd HH:mm:ss");
  Logger.log(lastRow)
  var date = data.getRange(lastRow,1,29,1).setValue(timestamp); //From columns 1 to 29 rows, every time print in column 1
}

此函数保证您只获取每一列中都有数据的行,因此您可以继续将时间戳记放在 Sheet-2 的第 1 列中,因为只有完全填充的行才会放在那里。

function save() {
  const sss = SpreadsheetApp.getActive();
  const sh1 = sss.getSheetByName('Sheet-1'); 
  const sh2 = sss.getSheetByName('Sheet-2');
  const vs1 = sh1.getRange('E20: N48').getValues().filter(r => !r.some(e => !e));
  const lr = sh2.getLastRow() + 1;
  const vs2 = sh2.getRange(lr, 2, vs1.length, vs1[0].length).setValues(vs1);
  const timestamp = Utilities.formatDate(new Date(), "GMT+6:00", "yyyy-MM-dd HH:mm:ss");
  sh2.getRange(lr, 1, vs1.length, 1).setValue(timestamp); 
}