2013-03-19 36 views
0

有沒有辦法在腳本中觸發電子表格的onFormSubmit?也就是說,而不是使用谷歌表單來觸發onFormSubmit? 我嘗試下面的代碼sendHttpPost發佈到電子表格Web應用程序:如何在腳本中誘導電子表格的onFormSubmit觸發器?

function sendHttpPostSelf() { 
var payload = { 
     "name" : "name", 
     "comment" : "comment", 
    }; 
    var options = { 
     "method" : "post", 
     "payload" : payload 
    }; 
var url="https://script.google.com/macros/s/AKfycbzlVoiDQMbLe4yliErDoNub6A0m3tijSfPAUMEBENgIikQnLQ_H/exec"; 
var resp=UrlFetchApp.fetch(url,options); 
Logger.log(resp.getContentText()); 
} 

代碼電子表格中的Web應用程序正確地觸發的doPost()。但是,該代碼不會觸發電子表格的onFormSubmit。或者,在插入電子表格時,是否有辦法編寫腳本onInsert觸發器?當谷歌表單提交

回答

0

的東西 - 那 - 不要 - 觸發onEdit,與他們的問題跟蹤IDS的A名單,在previous answer被提供。這裏有一個示例代碼,演示檢測到一個新行......但需要注意的是,您需要執行其他類型的編輯才能觸發它!

所以,壞消息 - 儘管阿倫的回答,既沒有插入行,也不是劇本創作值將觸發onEdit。

+0

謝謝Mogsdad,我很欣賞修正答案,它救了我一些痛苦的調試! – user1387318 2013-03-20 13:04:44

0

onFormSubmit觸發器纔會觸發。獲得一個Apps腳本代碼來觸發它非常棘手/不受支持。

如果你只是要檢測新行的能力,你可以使用onEdit觸發器和檢查範圍,看看得到什麼插入。

https://developers.google.com/apps-script/understanding_events

+0

感謝輸入阿倫,當一個新行插入腳本將onEdit觸發的工作?問候Commet – user1387318 2013-03-20 00:19:11

+0

是的,事實上它可以在所有情況下工作,你必須弄清楚事實上這是否是一個行插入。玩它,你可能會看到一些有趣的選項。 – 2013-03-20 01:01:21

+0

Arun,請參閱上面更正的答案;我確認onEdit觸發器也不會觸發插入。我將在問題跟蹤器中提交一個新的功能請求,以處理onInsert觸發器。 – user1387318 2013-03-20 17:37:36

0

,請告訴我,如果我錯了,但我的理解,要提交不通過一個谷歌的形式的值,但形式建造你自己和你想用的doPost行動提交。
如果是這樣,這裏是你可以做什麼:
1 /用appenrow()插入來自電子表格中的doPost數據
2 /調用通常被稱爲用的doPost內onFormSubmit()(你的函數需要transfert到onFormSubmit功能很好的理由(好像它是一個真正的formSubmit稱呼)

這裏是一個樣本函數:

function onformSubmit(e){ 
    var answers = e.values; 
    if (typeof(answers) == "undefined") answers = e; 
    MailApp.sendEmail("youremailadress", "form first answer", answers[1]); 

} 
function doPost(e){ 
    MailApp.sendEmail("youremailadress","reponse doPost",e.parameter.name); 
    SpreadsheetApp.openById("spreadsheet id").getSheetByName("spreadsheet name").appendRow([new Date(),e.parameter.name,e.parameter.comment]); 
    var toe = [new Date(),e.parameter.name,e.parameter.comment]; 
    onformSubmit(toe); 
    return(ContentService.createTextOutput().setContent("okey")); 
} 
function submitIt(){ 
    var payload = { 
     "name" : "name", 
     "comment" : "comment", 
    }; 
    var options = { 
     "method" : "post", 
     "payload" : payload 
    }; 
var url="https://script.google.com/macros/s/yourscripturl/exec"; 
var resp=UrlFetchApp.fetch(url,options); 
} 

當您啓動submitIt(),它會調用doPost方法是會在電子表格中寫入行,就像表單被引用一樣,然後它將會c所有的功能onformsubmit(表單時submited即通常被稱爲)

+0

該代碼不會觸發電子表格的onFormSubmit - onFormSubmit觸發器只會在Google表單提交時觸發...如果您願意,請添加註釋以作爲新請求在問題跟蹤器#1363中實施。 – user1387318 2013-03-20 17:51:22

+0

@ user1387318事實上,它不會觸發(onFormSubmit觸發器),但它會「觸發」onFormSubmit觸發器:doPost將數據添加到電子表格,然後調用函數onFormSubmit()< - 這是用onFormSubmit觸發器觸發的功能 - 抱歉,我認爲你在哪裏尋找onFormSubmit觸發器的備用解決方案 – Harold 2013-03-21 09:05:52

相關問題