0

日付に基づいて値を削除するスクリプトを作成しようとしています。Googleスクリプトで日付を使用する

このコードでは、3番目の列の行が整数または単語に等しい場合は削除できます。しかし、私はそれが日付で動作するようにしようとしています。 3列目の値は日付で、スクリプト内の日付と一致する場合は削除されます。スクリプトの日付はyesterdaysでなければなりません。私は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

あなたの 'curDate'は日付ではありません。それは日付のような文字列です。スプレッドシートに日付や文字列が含まれていますか? – FTP

答えて

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); 
     } 
    } 
    } 
} 
関連する問題