下面是一些代碼,我想會做你想要什麼:
function ClearOld() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('Done');
SpreadsheetApp.setActiveSheet(sh);
var MyRange = sh.getRange(1,3,sh.getLastRow(),1);//selects C column
var dataInColumnC = MyRange.getValues();
//Logger.log('dataInColumnC: ' + dataInColumnC);
var todaysDate = new Date();
var todayAsMilliseconds = todaysDate.getTime();
Logger.log('todayAsMilliseconds: ' + todayAsMilliseconds);
var WeekAgo = todayAsMilliseconds - (7*(24*3600*1000));
Logger.log('WeekAgo: ' + WeekAgo);
var valueInCell,
dateInCell,
lengthOfData = dataInColumnC.length;
for (var i=lengthOfData; i > 0; i-=1) { //decrement count
if (dataInColumnC[i-1] === undefined) {continue};
valueInCell = dataInColumnC[i-1][0];
if (valueInCell === undefined || valueInCell === "") {continue};
Logger.log('valueInCell: ' + valueInCell);
Logger.log('typeof valueInCell: ' + typeof valueInCell);
dateInCell = valueInCell.getTime();
Logger.log('dateInCell: ' + dateInCell);
if(dateInCell < WeekAgo){
Logger.log('Row - ' + i + ' Is more than a week old');
sh.deleteRow(i);
};
};
};
我測試過它,和它的作品。我避免使用ssActive.getRange("C:C");
,因爲它可以獲得許多空行數據。您必須從下向上刪除行。如果從頂部刪除行,則刪除第一行後,數組中的數據和電子表格中的行將不同步。
閱讀[故障排除指南(https://developers.google.com/apps-script/troubleshooting)添加'Logger.log( 'WeekAgo:' + WeekAgo);'語句'WeekAgo'行之後。運行代碼,然後在VIEW菜單中選擇LOGS。對MyRange [i] .getTime()'做同樣的操作。日誌在打印中有什麼? –
你需要像這樣設置活動SS:'var ss = SreadsheetApp.getActiveSpreadsheet(); ss.setActiveSheet(ss.getSheetByName(「Done」));' –