0

我想問一下關於運行onChange觸發器之後,Google表格以進行更改。表單答案電子表格 - onChange觸發器

我有改變後發送電子郵件此源代碼是由:

function onChange(e){ 

    var sheet = SpreadsheetApp.getActiveSheet(); 

    var helpRange = sheet.getRange(2, 16); 
    var debugRange = sheet.getRange(2,17); 
    var startRow = helpRange.getValue(); 
    var numRows = sheet.getLastRow() - startRow + 1; // Number of rows to process 
    debugRange.setValue(numRows); 
    var dataRange = sheet.getRange(startRow, 1, numRows, 11); 
    var data = dataRange.getValues(); 
    var cal = CalendarApp.getDefaultCalendar(); 
    for (i in data) { 
     var row = data[i]; 
     var title = row[3]; 
     var desc = "Description: " + row[4] + " Requested Accounts: " + row[5] + " Marketing Support: " + row[6] + " Responsible Salesman " + row[8] + " Email: " + row[9] + " " + row[10];  // Second column 
     var tstart = row[1]; 
     var tstop = row[2]; 
     var loc = row[7]; 

     cal.createEvent(title, new Date(tstart), new Date(tstop), {description:desc,location:loc}); 


     helpRange.setValue(sheet.getLastRow() + 1); 
     var emailAddress = sheet.getRange(sheet.getLastRow(), 10).getValue(); 
     var subject = "New Event Created: " + title; 
     Browser.msgBox(emailAddress + " " + subject + " "+ desc); 
     MailApp.sendEmail(emailAddress, subject, desc); 

    } 
} 

此電子表格應該由谷歌形式自動填寫(當用戶提交一個答案),並沒有其他的用戶應該做任何改變到它。這個onChange觸發器在每次我進行物理更改時(如預期的那樣,但不會發生)觸發,但是當我從Google Form提交答案時,它也顯示在電子表格中,但onChange觸發器未被觸發。

爲什麼?

我可以編寫它,以便觸發器在Google Form發生更改後觸發嗎?

+2

你想要「表單提交」觸發器。請參閱https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events – eddyparkinson 2014-09-29 02:15:05

+1

另外,SpreadsheetApp.getActiveSheet();只有在電子表格打開的情況下才有效,也許最好用ID打開 – eddyparkinson 2014-09-29 03:38:39

回答

1

正如eddyparkinson所述,您絕對需要表單提交觸發器,而不是更改或編輯觸發器。

可以在Google表單或收到表單回覆的Google表單中設置form submit trigger。每種情況下的觸發事件稍有不同; Google Sheets form submit event包含簡單數組(e.values,e.namedValues)中的表單條目值,而Forms form submit event包含FormResponse對象,可以查詢有關表單提交的所有信息。

相關問題