我希望我的表單中的每個新的響應條目都被複制到另一個表單中。然後,如果該行由具有多個數據的單元格組成,則這些單元格將分割成多行,如同在我的樣本表上。最後,新條目始終發生在最後一個非空行之後。分割腳本谷歌電子表格v2
可以做到這一點嗎? 如果我還不夠精確,請告訴我。
親切。
我希望我的表單中的每個新的響應條目都被複制到另一個表單中。然後,如果該行由具有多個數據的單元格組成,則這些單元格將分割成多行,如同在我的樣本表上。最後,新條目始終發生在最後一個非空行之後。分割腳本谷歌電子表格v2
可以做到這一點嗎? 如果我還不夠精確,請告訴我。
親切。
這將讓你接近你想要什麼。我添加了'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)
}
感謝@Ed Nelson爲這段代碼,我試過你的代碼,它除了當列是空的或列被添加時工作。我不明白。例如,我改變了getRange(2,2,lr-1,5)中的列號,但沒有任何反應。我可以澄清一下嗎?熱忱。 – william
我正在與添加的列共享電子表格,並解釋了我所更改的內容。我希望它能幫助你理解代碼。 https://docs.google.com/spreadsheets/d/1MjKctjb9fuMyGuMD7uaX47R05vSEzGjmdzRfJn5VrDY/edit?usp=sharing –
你好@Ed Nelson, 我剛剛看到你的代碼,其實代碼工作:) 但是,我有一個關於語法的問題。 這2個語法有什麼區別? 第35行:output.push([range [i] [0],split [k],「」,「」]); output.push([range [i] [0],「」,split [k],「」]); 我說的是「」的位置。 熱情。 「 – william
運行這個我已經編輯您的文章,並移除了聲明:「在我最後的請求,我沒有從那裏我的新問題不夠精確。」這是爲了瞭解問題所在而不需要的個人信息。另外,你應該在你的問題中包含代碼。與電子表格的鏈接很好,但帖子應包含足夠的信息來理解問題,而無需訪問外部來源。 –
要將新數據放入最後一個非空行,可以使用'sheet.appendRow()'方法。它使用簡單。嘗試一下。 [應用腳本文檔appendRow()](https://developers.google.com/apps-script/reference/spreadsheet/sheet#appendRow(Object)) –