解決法ではないですが……。
スプレッドシートのsetValuesは気難しいので、
そういうエラーの際は一行ずつで確認しながら入れた方が良いです。
あと、ググって出なかったので記憶違いの可能性もありますが、
確か同時にsetできるセル数に上限があったように思います。
(200セルだったと思うのですが、リファレンスでも出ない……)
Like!
二次元配列をシートに出力する際にエラーが発生してしまいます。原因は恐らく二次元配列の中の配列の要素の個数が違うことから起きています。
個数を一番大きいものに揃えたいのですがどうしたらよいでしょうか。
Exception: データの列数が範囲の列数と一致しません。データは 30 列ですが、範囲は 45.列です。
function compare(data) {
let newarray = []
for(var i=1; i < 5000 ; i++){
if(data[i][15] !== "ok")
newarray.push(data[i])
for(var j=2; j < 5001 ; j++){
if(i !== j && data[i][1] === "SinglePhrase" && data[j][1] === "SinglePhrase" && data[j][15] !== "ok"){
if (data[i][12] === data[j][12] ) {
newarray[newarray.length - 1] = newarray[newarray.length - 1].concat(data[j]);
data[j].push("ok")
}
}
}
}
return newarray
}
const result = compare(data)
sheet_output.getRange(1,1,4053,45).setValues(result);
エラーの表示どおりデータを30にしたが、そうすると次はデータは 45列ですが、範囲は 30.列ですと同じ繰り返しをしてしまいました。
解決法ではないですが……。
スプレッドシートのsetValuesは気難しいので、
そういうエラーの際は一行ずつで確認しながら入れた方が良いです。
あと、ググって出なかったので記憶違いの可能性もありますが、
確か同時にsetできるセル数に上限があったように思います。
(200セルだったと思うのですが、リファレンスでも出ない……)
@asdfghjkl99031518
Questionerまず1点確認したいのですが、これは元データが15列あるものが結合されて30列になる想定で、実際に動かすと2つ結合されて45列になってしまうバグorデータ不備でしょうか?
それとも15の倍数列になれば想定通りなのでしょうか?
問題のエラーは、ソース中の何処で生じるのでしょうか?