2017-02-10 48 views
0

我已經從電子表格中編程創建了一堆表單,併爲每個表單綁定了一個響應觸發器。填寫表格時,我似乎無法確定填寫了哪種表格。FormResponse表單標題

我想:

Event.source.getId() 

但返回電子表格的ID。我想獲得表格的標題。

編輯:澄清

這是我如何設置觸發器:

ScriptApp.newTrigger('responseTrigger').forForm(form) 
.onFormSubmit() 
.create(); 

當我試圖讓標題:

function responseTrigger(e) { 
    var source = e.source; 
    var title = e.source.getTitle(). 
    Logger.log(title); 
} 

我得到以下錯誤:

Execution failed: TypeError: Cannot find function getTitle in object Spreadsheet.

+0

我認爲這可能是問題:https://code.google.com/p/google-apps-script-issues/issues/detail?id=3786 –

回答

0

我終於解決了這個問題。

有一個知道Google Scripts issue這是造成我的問題。你會期待e.source.getID()給你表單的ID,但它會給你電子表格的ID。我發現了solution in this question。你要做的就是找到觸發和交叉引用它的唯一ID的所有項目的觸發如下:

function getFileByTriggerId(triggerId){ 
     var triggers = ScriptApp.getProjectTriggers(); 
     for(var i =0; i<triggers.length; i++){ 
     if(triggers[i].getUniqueId() == triggerId){ 
     return triggers[i].getTriggerSourceId(); 
    } 
    } 
} 

,然後在響應觸發你寫:

function responseTrigger(e) { 
    var realEvent = getFileByTriggerId(e.triggerUid); 
    var form = FormApp.openById(realEvent); 
    var title = form.getTitle(); 
} 
0

這個怎麼樣?

如果您想在表單提交時檢索標題,則可以使用以下腳本。

var title = e.source.getTitle() 

如果您總是想要檢索標題,則可以使用以下腳本。

var form = FormApp.openById(form ID); 
var title = form.getTitle(); 
+0

我試過這個,但是我得到一個錯誤:「執行失敗:TypeError:找不到函數getTitle在對象電子表格「。 –

+0

@Yhhuda Solomont我很抱歉沒有幫助。 – Tanaike

+0

你非常有幫助。你的回答基本上是正確的,這個問題是谷歌服務的一個錯誤。 –