2013-05-07 73 views
0

我是Google Apps的新手,我很難重新格式化數據。使用Google Apps腳本轉換表單提交

我構建了一個輸出到Google Spreadsheet的表單。該表格提出6個問題,並要求提出6個問題5x。目前,輸出顯示30列數據。我想要構建一個Google Apps腳本,將其重新格式化爲單個數據列表,因此每個提交將轉換爲5列6列寬的數據,而不是1列30列寬的數據。

作爲一個額外的調整,列A顯示提交日期,我希望它對該提交中的每一行數據重複此操作。此外,每次提交可以有(6件每個數據)多達5個條目,但它也可以有隻1,2,3或4

這是我的工作,輸出:

https://docs.google.com/spreadsheet/ccc?key=0AltfQKymTKF2dGRrMU50ZkU3MGhIUHlvSFdBMDd2MWc&rm=full#gid=0

我認爲公式應這樣說:

Look at Column H 
Find first instance where cell is not blank 
Copy that and 6 cells over 
Paste 
Set the original copied cells to blank 
i + 1 
repeat 

then repeat the entire process in Column M 
then repeat the entire process in Column T 
etc. 

請幫助我,如果你有想法!使用「上提交表單」觸發器時

回答

0

數據從形式來也可以作爲變量,看doc here about Spreadsheet Form Submit Events

你應該使用這些變量來建立的第二層,你想要的電子表格的安排,同時使30列之一,因爲它是...

最好的方法很可能是建立一個2D陣列與適當的數據,並將其在此片材在一次寫(可能是在另一個電子表格,以及...)

這應該很容易通過將數組中的數據按5按5來設置,如果答案不爲空

像這樣(未測試)

function formSubmit(e) { 
    var data = [] 
    for(n=0;n<5;++n){ 
    var row = [] 
    if(e.values[3+n]!=''){ // if first element of serie n is not empty 
     for(c=0;c<6;++c){ 
     row.push(e.values[3+n+c]);// build row n with 6 colums (0 to 5) 
     } 
    }else{continue} 
    data.push(row);// add row n to data (0 to 4) 
} 
    SpreadsheetApp.getActiveSpreadsheet().getSheets()[1].getRange(1,1,data.length,data[0].length).setValues(data);// write data to sheet #2 
} 

編輯:我用了5和6,我改變了腳本來處理5行的6個答案...對不起,如果你看到第一個版本;-)

+0

我理解將表單提交存儲在Array中並將這些表單粘貼到新表單中的概念。我能夠將你的代碼綁定到表單提交上的觸發器,但它給了我TypeError:無法讀取。經過一番搜索之後,我認爲這是因爲'價值'不是一種標準資產。有我應該使用的腳本庫嗎? 謝謝你在這裏的幫助。我試圖支持一個非營利組織,你的援助是無價的。 – user2356818 2013-05-09 22:36:33

相關問題