2017-01-14 54 views
0

我有一個Google表單,因爲各種原因有多個複選框問題。我最終希望將已知數量的這些數據合併。在Google表單回覆表中合併多個複選框回覆

一旦表單提交,我想我可以讓應用程序腳本獲取提交的數據,將其複製到另一個表單,然後將上述問題響應合併到一個單元格csv中。

所以採取下面的例子:

name: 'name' 
question1: ['a','b','e'] 
question2: [] 
question3: ['dog','cat'] 
question4: ['notMerged'] 

並將其複製到另一個頁面,看起來像:

name: 'name' 
questions: ['a','b','e','dog','cat'] 
question4: ['notMerged'] 

我一直在閱讀關於設置爲onFormSubmit觸發和獲取數據,但不知道合併結果等事情,將它放在同一行#等。合併的字段的列索引是靜態的,但是不會總有一些是空的,所以我需要做在加入前對每一個進行空檢查。

我正在通過「快速入門:管理Google窗體的響應」代碼來查看發生了什麼,但我並不真正瞭解JavaScript。

不找人寫了這一點,但對我來說有幾個三分球幫助讓我布萊恩在正確的方向

+0

您可以使用JavaScript concat()方法來連接數組。 [參考信息鏈接](http://www.w3schools.com/jsref/jsref_concat_array.asp) –

回答

2

如果你不介意你的第二片上略有不同的格式,你可以做這沒有腳本。 。在第二頁,輸入標題(A1和B1 '問題' 和 '問題4' 然後,在A2輸入:

= IFERROR(JOIN("," , FILTER('Form Responses 1'!B2:D2, NOT('Form Responses 1'!B2:D2 = "")))) 

在B2中輸入:

=iferror('Form Responses 1'!E2) 

複製公式下來。沒有數據的行(尚未)會一直是空白的,直到表單數據被添加爲止

我想知道發生了什麼,當表單被提交時,它會插入一行並導致公式發生改變。將公式設置在正確的行上(刪除舊的公式。)讓我知道你是否有任何問題。

//you need to set an installable onFormSubmit trigger 
function test(){ 
    var ss=SpreadsheetApp.getActiveSpreadsheet() 
    Utilities.sleep(4000) 
    var s=ss.getSheets()[1] 
    var s1=ss.getSheets()[0] 
    var lr=s.getLastRow()+1 
    var lr1=s1.getLastRow() 
    var r="A"+lr1 
    var q="B"+lr1 
    var t="D"+lr1 
    var u="E"+lr1 
    s.getRange(lr, 1, 1, 1).setFormula("=iferror('Form Responses 1'!"+ r +")") 
    s.getRange(lr, 2, 1, 1).setFormula("= IFERROR(JOIN(\",\" , FILTER('Form Responses 1'!"+ q +":"+ t +", NOT('Form Responses 1'!"+ q +":"+ t +" =\"\") )))") 
    s.getRange(lr, 3, 1, 1).setFormula("iferror('Form Responses 1'!"+ u +")") 
} 
+0

嘿編輯, 這幾乎是我正在尋找。 – Jon

+0

Hey Ed, 快速提示 - 看起來當提交表單時,會插入一個新行,並且第二個表單上的表單會更改該函數。 因此,如您所提到的那樣設置了空白頁,如果表單被提交併且結果轉到「Form Responses 1」行2,則第二個sheet2中的行2中的功能從a2,b2等轉移到a3,b3。 – Jon

+0

你能解釋一下你的問題好一點嗎?提交新表單時,我無法進行轉換。也許我不明白。 –