2016-04-29 26 views
0

我試圖讓Google表單在提交表單時自動排序。我已經能夠設置腳本以便按照以下方式進行排序,但只有在手動編輯電子表格時(而不是從表單輸入新數據時)才能使用該腳本。每次提交表單時使用觸發器對錶單進行排序

function onEdit(event){ 
    var sheet = event.source.getActiveSheet(); 
    var editedCell = sheet.getActiveCell(); 

    var columnToSortBy = 6; 
    var tableRange = "A2:F100"; 

    if(editedCell.getColumn() == columnToSortBy){ 
    var tableRange = "A2:F100"; 

if(editedCell.getColumn() == columnToSortBy){ 
var range = sheet.getRange(tableRange); 
    range.sort({ column : columnToSortBy }); 
    } 
} 

我需要設置一個觸發器,以便在提交表單時執行此操作。我發現這對谷歌開發者,但我不知道在下面的(「myFunction的」)的內容:

var sheet = SpreadsheetApp.getActive(); 
ScriptApp.newTrigger("myFunction") 
.forSpreadsheet(sheet) 
.onFormSubmit() 
.create(); 

回答

2

表單提交不是一個編輯,所以onEdit觸發沒用在這裏。相反,使用下面的簡單函數和一個可安裝的觸發器在表單提交中。這很容易手動設置觸發:在腳本編輯器,進入資源>當前項目的觸發器,並添加此:

trigger

功能:

function sortSheet() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var columnToSortBy = 6; 
    var headers = 1; // number of header rows, usually 1 
    var range = sheet.getRange(headers + 1, 1, sheet.getLastRow() - headers, sheet.getLastColumn()); 
    range.sort({ column : columnToSortBy }); 
} 
+1

這比OP什麼更好的要求。爲了從字面上做到這一點,'myFunction'可以用'onEdit'替換,所以表單提交*不會*模擬'onEdit'。 – Jonathon

+0

謝謝。這工作,但現在它也排序標題行。我怎麼寫它,以防止發生? –

+0

@Browne女士編輯 – 2016-05-02 16:01:57