2015-04-01 44 views
1

我想製作一個腳本,將一行內的日期與今天的日期進行比較,如果今天的日期粘貼日期行,則刪除該行。Google Apps腳本 - 如果今天的日期是過去的輸入日期,則刪除一行

這是我當前的腳本:

function deleteRow1() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var startRow = 1; // First row of data to process 
var numRows = sheet.getLastRow()-1; // Number of rows to process 
var dataRange = sheet.getRange(startRow, 2, numRows); 
// Fetch values for each row in the Range. 
var data = dataRange.getValues(); 

for (i=0;i<data.length;i++) { 
    var row = data[i]; 
    var date = new Date(); 
    var sheetDate = new Date(row); 
var Sdate = Utilities.formatDate(date,'GMT+0200','yyyy:MM:dd') 
var SsheetDate = Utilities.formatDate(sheetDate,'GMT+0200', 'yyyy:MM:dd') 
     if (Sdate > SsheetDate){ 
      sheet.deleteRow(i+2) //don't delete header 
} 
} 
} 

的最終目標是與今天的日期比較列C日期和刪除特定行,如果今天的日期是更大的。

現在,當我運行腳本時,它會刪除一些行,但不是特定於早於今天日期的行。

這個腳本的開端是based off another StackOverflow post

回答

1

當您從頂部開始迭代底部刪除行迭代改變偏移下一行

上述問題可以通過啓動來解決的(實際的行號)從下到上迭代。

for (i=data.length-1;i>=0;i--) 

這裏是工作的代碼

function deleteRow1() 
{ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = sheet.getLastRow()-1; // Number of rows to process 
    var dataRange = sheet.getRange(startRow, 2, numRows); 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 

    for (i=data.length-1;i>=0;i--) 
    { 
      var row = data[i]; 
      var date = new Date(); 
      var sheetDate = new Date(row); 
      var Sdate = Utilities.formatDate(date,'GMT+0200','yyyy:MM:dd') 
      var SsheetDate = Utilities.formatDate(sheetDate,'GMT+0200', 'yyyy:MM:dd') 
      if (Sdate.valueOf() > SsheetDate.valueOf()) 
      { 
       sheet.deleteRow(i+2) //don't delete header 
      } 
    } 
} 
+0

謝謝你,薩欽ķ!您的建議適用於刪除行,但當我添加日期大於今天的日期時,腳本仍會刪除行。它似乎沒有比較行日期和今天的日期。有任何想法嗎? – coachpacman 2015-04-01 15:54:01

+0

我在電子表格中嘗試了您提出的問題(請參閱鏈接)https://docs.google.com/spreadsheets/d/1oSggeHpwcX3sNt0Yx1Vt8cPCI0RqKIZ-a4p0_JV5p9I/edit,它的工作原理。唯一的事情是在mm/dd/yyyy而不是dd/mm/yyyy – 2015-04-01 16:14:43

+1

你是完全正確的。再次感謝Sachin K! – coachpacman 2015-04-01 16:39:41

相關問題