2015-05-22 55 views
-1

是否可以創建一個腳本來刪除電子表格中超過3周的響應?我需要一段在特定時間段後刪除行的腳本

這是我試過,沒有工作的腳本:

function duration() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var data = sheet.getDataRange().getValues(); 
var newData = new Array(); 
var now = new Date(); 
newData.push([("Timestamp") , ("First Name") , ("Last Name") , ("Homeroom")]); 
for(i in data){ 
var row = data[i]; if (now - row[0] < 300000) { newData.push(row); 
} 
} 

sheet.clearContents(); 
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData); 
+0

是的,你需要添加[時間驅動(時鐘)觸發(https://developers.google.com/apps-script/guides/triggers/installable#time -driven_triggers)。然後你需要能夠以某種方式按日期過濾。做一個[搜索](http://stackoverflow.com/search?q=%5Bgoogle-apps-script%5D%5Bgoogle-spreadsheet%5Ddelete+rows+date) –

+0

@SandyGood,我不確定如何做到這一點。我沒有製作腳本的經驗,所以只想問問任何人是否知道直接的答案,因爲我對這類事情一無所知。我嘗試使用某個程序,但是它只是刪除了窗體上的所有響應,並將最上面一行更改爲與響應應該不同的內容。 – Lev

+0

@Lev詢問是否有可能是錯誤的方式來問這個問題。有沒有可能表明你只是想要一個是或否的答案,而不是一個實際的解決方案。 –

回答

0

這工作。我測試過它:

function duration() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var data = sheet.getDataRange().getValues(); 
    var newData = new Array(); 
    var now = new Date(); 

    var threeWeeksAgo = new Date(); 
    threeWeeksAgo.setDate(now.getDate() - 21); 

    var theLastRow = sheet.getLastRow(); 
    newData.push(["Timestamp","First Name","Last Name","Homeroom"]); 

    for(var i=0;i<theLastRow;i++){ 
    var row = data[i]; 
    if (row[0] > threeWeeksAgo) { 
     newData.push(row); 
    }; 
    }; 

    sheet.clearContents(); 
    sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData); 
}; 
相關問題