2017-03-05 57 views
0

我希望我的表單中的每個新的響應條目都被複制到另一個表單中。然後,如果該行由具有多個數據的單元格組成,則這些單元格將分割成多行,如同在我的樣本表上。最後,新條目始終發生在最後一個非空行之後。分割腳本谷歌電子表格v2

可以做到這一點嗎? 如果我還不夠精確,請告訴我。

親切。

File link

+0

運行這個我已經編輯您的文章,並移除了聲明:「在我最後的請求,我沒有從那裏我的新問題不夠精確。」這是爲了瞭解問題所在而不需要的個人信息。另外,你應該在你的問題中包含代碼。與電子表格的鏈接很好,但帖子應包含足夠的信息來理解問題,而無需訪問外部來源。 –

+0

要將新數據放入最後一個非空行,可以使用'sheet.appendRow()'方法。它使用簡單。嘗試一下。 [應用腳本文檔appendRow()](https://developers.google.com/apps-script/reference/spreadsheet/sheet#appendRow(Object)) –

回答

0

這將讓你接近你想要什麼。我添加了'Feuille 2'表來保存所調整的數據。你可以從onFormSubmit腦功能

function splitAll(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Réponses au formulaire 2") 
var lr=s.getLastRow() 
var range=s.getRange(2, 2, lr-1, 3).getValues() 
var output=[] 
var split=[] 

for(var i=0;i<range.length;i++){ 
    for(var j=0;j<range[0].length;j++){ 
    if(j==0){} 
    if(j==1){ 
    var split=range[i][j].split(", ") 
    if(split.length != 1) { 
     for(k=0;k<split.length;k++){ 
     output.push([range[i][0],split[k],""]);} 
    }else{ 
     output.push([range[i][0],range[i][j],""]); 
    }} 
     if(j==2 && range[i][2] !=""){ 
    var split=range[i][j].split(", ") 
    if(split.length != 1) { 
     for(k=0;k<split.length;k++){ 
     output.push([range[i][0],"",split[k]]);} 
    }else{ 
     output.push([range[i][0],"",range[i][j]]); 
    }} 
    }} 
ss.getSheetByName("Feuille 2").getRange(2, 1, output.length, output[0].length).setValues(output) 
} 
+0

感謝@Ed Nelson爲這段代碼,我試過你的代碼,它除了當列是空的或列被添加時工作。我不明白。例如,我改變了getRange(2,2,lr-1,5)中的列號,但沒有任何反應。我可以澄清一下嗎?熱忱。 – william

+0

我正在與添加的列共享電子表格,並解釋了我所更改的內容。我希望它能幫助你理解代碼。 https://docs.google.com/spreadsheets/d/1MjKctjb9fuMyGuMD7uaX47R05vSEzGjmdzRfJn5VrDY/edit?usp=sharing –

+0

你好@Ed Nelson, 我剛剛看到你的代碼,其實代碼工作:) 但是,我有一個關於語法的問題。 這2個語法有什麼區別? 第35行:output.push([range [i] [0],split [k],「」,「」]); output.push([range [i] [0],「」,split [k],「」]); 我說的是「」的位置。 熱情。 「 – william

相關問題