【问题标题】:Using Dates in Google Scripts在 Google 脚本中使用日期
【发布时间】:2017-09-08 13:15:11
【问题描述】:

我正在尝试编写一个脚本来删除基于日期的值。

代码允许我删除第三列中的一行,如果它等于一个整数或单词。但是我试图让它与日期一起工作。第三列中的值是日期,如果它与脚本中的日期匹配,那么它将被删除。脚本中的日期应该是昨天,我认为可以使用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 得到昨天的日期!

谢谢!

【问题讨论】:

  • 您的curDate 不是日期,它是一个看起来像日期的字符串。您的电子表格是否包含日期或字符串?

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


【解决方案1】:

删除行时最好从底部开始。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多