2017-07-29 93 views
1

我希望收集來自Google表單的數據的工作表刪除舊數據。我在工作表中有這個腳本,但是當通過表單添加新數據時它似乎不運行。使用Google表單在工作表中刪除舊數據行

function onEdit(e) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("1054"); 
var datarange = sheet.getDataRange(); 
var lastrow = datarange.getLastRow(); 
var values = datarange.getValues();// get all data in a 2D array 

var currentDate = new Date(); 
var oneweekago = new Date(); 
oneweekago.setDate(currentDate.getDate() - 7); 

for (i=lastrow;i>=2;i--) { 
var tempdate = values[i-1][0]; 

if(tempdate < oneweekago) 
{ 
    sheet.deleteRow(i); 
} 

片它與被稱爲1054

我需要把appscript的形式?如果是這樣,那會是什麼?

+0

您必須「安裝」和「在表單提交」觸發器。將'onEdit(e)'重命名爲別的東西。 'onEdit()'是一個「保留」函數名稱。您不應該爲「On Form Submit」觸發器使用保留的函數名稱。給它你自己獨特的名字。然後從代碼編輯器中單擊「編輯」菜單和「當前項目觸發器」並添加一個觸發器。 –

+0

所以我需要在表單上放置一個腳本來運行表單中的腳本?我怎麼做? –

+0

「表單提交」觸發器可以添加到表格或電子表格中。將「On Form Submit」觸發器添加到電子表格中會更加輕鬆。獲取數據更容易,並且如果您希望代碼影響電子表格,那麼這是更直接的關係。在代碼編輯器中,選擇「幫助」,然後選擇「文檔」搜索單詞「事件對象」 –

回答

2

我認爲最好是將工作表和單獨附加的表單放在一起。以下是我在網站上的表單上所做的工作。

function formSubmitEvent(e) 
{ 
    var ss=SpreadsheetApp.openById('SpreadsheetID'); 
    var sht=ss.getSheetByName('ResponseReview');//this is another sheet I used for reviewing the responses. 
    sht.appendRow(e.values);//I append a row to the ResponseReview sheet 
    selfEmail(e.values);//and I send myself an email if my quota is above 75 
} 

即使你刪除鏈接表的形式將繼續增加數據離開的地方,因爲它顯然跟蹤的下一行是什麼樣的舊數據。

一般來說,我只留下鏈接表。確實,我使用Googgle Apps Script創建了自己的表單,因此在我收到很多回復時,我將取消鏈接表單並刪除它們,然後通過運行該腳本重新生成表單,並且將鏈接新的表單和表單,但是我將在另一張表格中繼續審覈流程,該表格還可以從提交的數據創建Google文檔。從本質上來說,表單想要放置數據的位置並不重要,因爲我捕獲了onFormSubmit觸發器,並將它放入了values數組的ResponseReview表單中。我可以用這張紙做任何我想要的,而不影響鏈接。

相關問題