我正在尝试编写一个脚本来根据日期删除值。
代码允许我删除第3列中的行,如果它等于整数或单词。但是,我试图让它与日期一起工作。第3列中的值是日期,如果它与脚本中的日期匹配,则它将被删除。脚本中的日期应该是昨天,我认为可以使用new Date()-1
,但这并不能解决问题。
以下是我的工作代码:
function readRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var date = new Date();
var curDate = Utilities.formatDate(date, "GMT+1", "dd/MM/yyyy");
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[3] == curDate) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted); rowsDeleted++; } } };
我正在尝试1,使日期有效 - 我认为这是由于整数的事情。 并且2获得昨天的约会!
谢谢!
答案 0 :(得分:0)
删除行时最好从底部开始。
function readRows()
{
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var numRows = range.getNumRows();
var values = range.getValues();
var curDate = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd/MM/yyyy");
var rowsToDelete = [];
for (var i=0;i<values.length;i++)
{
var row = values[i];
if (Utilities.formatDate(new Date(row[3]), Session.getScriptTimeZone(), "dd/MM/yyyy") == curDate);
{
rowsToDelete.push(i);
}
}
if(rowsToDelete.length)
{
for(var i=values.length-1;i>=0;i--)
{
if(rowsToDelete.indexOf(i)>-1)
{
sheet.deleteRow(i+1);
}
}
}
}