在Google脚本中使用日期

时间:2017-09-08 13:15:11

标签: google-apps-script google-sheets google-api google-spreadsheet-api google-sheets-api

我正在尝试编写一个脚本来根据日期删除值。

代码允许我删除第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获得昨天的约会!

谢谢!

1 个答案:

答案 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);
       }
     }
   }
}