GASでパースしたデータを再編し、一部が多次元になっている配列にしてみました。
それを定時パースするたびにスプレッドシートに追加出力したいと考えています。
appendRowを使ってみたら、多次元になっている部分が表題のようなエラーになってしまいます。
function myFunction() { var array = ["a","b","c"] var tempArray1 = []; var tempArray2 = ["e","f","g"] var tempArray3 = ["h","i","j"] tempArray1.push(tempArray2); tempArray1.push(tempArray3); array.push(tempArray1); Logger.log(array); // [a, b, c, [[e, f, g], [h, i, j]]] Logger.log(array[3][0]); // [e, f, g] Logger.log(array[3][0][0]); // [e] var sht = SpreadsheetApp.getActiveSheet(); sht.appendRow(array); } ```aとbとcは、それぞれ別の列のセルに収まるのに、[[e,f,g],[h,i,j]]の部分に該当する列のセルがエラーとなってしまうのです。 ログ出力で示したように、多次元の奥の方のデータも取れるので、配列としては成り立っているのではないかと思うのですが…。 エラー表示で検索してみたら、String()が有効とあったので試してみました。 ```ここに言語を入力 <1> array.push(tempArray1); ↓ array.push(String(tempArray1)); <2> tempArray1.push(tempArray2); tempArray1.push(tempArray3); ↓ tempArray1.push(String(tempArray2)); tempArray1.push(String(tempArray3)); <3> <1>と<2>の両方 ```このうち<2>と<3>は値がひとつの列に入りましたが、入れ子がなくなり、データがフラットになってしまいました。 イメージとしては、ひとつのセルに[e, f, g], [h, i, j]と入るなど、いずれにせよシステマチックに適宜取り出したり、一部データでソートしたりできるようにしたいと思うのですが…。 勉強中の身ゆえ、配列とは何かが根本的に分かっていないのかもしれません。 どなたかご教唆いただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/07 12:10
2019/10/08 00:29
2019/10/08 00:53