我需要删除日期在今天之前的行。
我有这样的事情:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();
var today = new Date();
var date = Utilities.formatDate(new Date(today), "GMT", "yyyy-MM-dd HH:mm:ss");
// logs date 2013-06-12 19:23:53
for(n=1;n<data.length;++n){
var start = data[n][0];
//logs start Wed Jul 10 19:00:00 GMT-07:00 2013
}
谢谢!
答案 0 :(得分:3)
你没有显示任何数据,所以我猜了一下。
电子表格中日志的日期格式如下所示:
Wed Jul 10 19:00:00 GMT-07:00 2013
Google Spreadsheets不会自动将该格式识别为日期。但是,创建一个javascript Date对象是可以的,所以我们可以这样做进行比较,如下所示:
new Date("Wed Jul 10 19:00:00 GMT-07:00 2013")
您首先将电子表格数据放入数组中,这很好 - 它很快,我们可以一步写出最终数据。要从数组中删除行,请使用Array.splice()
方法。这是生成的脚本:
function killOldLogs() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();
var today = new Date();
// Loop over whole range, removing rows that are too old.
// Leaves row 0, assuming it's a header row.
for(n=data.length-1;n>0;--n){
if (new Date(data[n][0]) < today) {
data.splice(n,1);
}
}
sheet.clearContents(); // Get rid of old contents, then write new
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}