在電子表格中,我想為預先選擇的 (E20: N48) 行和列資料添加時間戳。例如:如果Sheet-1的E20:E22單元格填充了一些資料,則時間戳將設定為Sheet-2的第1列中的單元格A2到單元格A4。同樣,每次都會為最后一行的資料設定時間戳。正如您在我的代碼中看到的那樣,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 cloumn 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 cloumn 1 to 29 rows, every time print in column 1
}
uj5u.com熱心網友回復:
此函式保證您只獲取每列中有資料的行,因此您可以繼續將時間戳放在 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);
}
陣列.some()
陣列過濾器()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372969.html
