[英]delete date in spreadsheet prior today's date apps script
I need to delete rows where date is before today. 我需要删除日期在今天之前的行。
I have something like this: 我有这样的事情:
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
}
Thanks! 谢谢!
You don't show any of your data, so I'm guessing a bit. 您没有显示任何数据,所以我有点猜测。
It appears that the date format of the logs in your spreadsheet is like this: 您的电子表格中日志的日期格式似乎是这样的:
Wed Jul 10 19:00:00 GMT-07:00 2013
That format is not automatically recognized as a date by Google Spreadsheets. Google Spreadsheets不会自动将该格式识别为日期。 However, it is OK for creating a javascript Date object, so we can do that for comparisons, like so:
但是,可以创建javascript Date对象,因此可以进行比较,例如:
new Date("Wed Jul 10 19:00:00 GMT-07:00 2013")
You've started by getting the spreadsheet data in an array, and that's good - it's quick, and we can write out the final data in one step. 您首先将电子表格数据存储在一个数组中,这很好-很快,我们可以一步一步写出最终数据。 To remove rows from the array, use the
Array.splice()
method. 要从数组中删除行,请使用
Array.splice()
方法。 Here's the resulting script: 这是生成的脚本:
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.