次のような行を含むGoogleドキュメントのスプレッドシートがあります。
| | things; separated;by;semicolons;with;line;breaks |
something | something else | A;B;C;D;E;F;G | one more thing
| | K;L;M;N;O;P;Q |
-----------------------------------------------------------------------------------------------
3 番目の列を改行で分割し、それぞれを行全体の 1 つのコピーに入れ、3 番目のセルを上書きしてから、そのセルをセミコロンで分割します。最後に、前の行を次のように変換する必要があります。
something|something else|things|separated|by|semicolons|with|line|breaks| one more thing
-----------------------------------------------------------------------------------------
something|something else| A | B | C| D | E | F | G | one more thing
-----------------------------------------------------------------------------------------
something|something else| K | L | M| N | O | P | Q | one more thing
-----------------------------------------------------------------------------------------
この関数を試してみましたが、一部のセルが重なり合って他のセルを上書きします:
function splitColumnAndRepeatRows(anArray, splitColumnIndex) {
var output = [];
for (i in anArray){ // for each row
var splitArray = anArray[i][splitColumnIndex].split(/\n/g); // split values by line breaks
for (j in splitArray){ // for each split array
var row = anArray[i].slice(0); // copies the entire line
row.splice(2,1,splitArray[j].split(";")); // inserts the splited values overwriting the third cell
output.push(row);
}
}
return output;
}
そのため、スプライス関数は、セル 2 と 4 の間に分割値を挿入しません。分割値は、次のように、3 番目のセルから配置され、4 番目のセル (例では「もう 1 つ」) を上書きします。
something|something else|things|separated|by|semicolons|with|line|breaks
------------------------------------------------------------------------
誰かが私の間違いを指摘できますか? 十分に説明したことを願っています。
前もって感謝します。