質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

757閲覧

2つの2次元配列の結合につきまして

TopingMado

総合スコア25

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/06/10 11:15

前提・実現したいこと

下記サンプル配列をこの形で結合したいですが、配列をconcactしてみましたが、同じ配列内に追加することはできません。
また、配列A[0]に配列B[0]をpushしてみましたが、エラーメッセージが出ました。

エラーメッセージ TypeError: Cannot read property 'push' of undefined

【結合後】
[[2021/05/31,データA,データB,データC,データD,データE,データF],[2021/06/01,データA,データB,データC,データD,データE,データF],[2021/06/02,データA,データB,データC,データD,データE,データF]]

【配列A】
[[2021/05/31,データA,データB,データC],[2021/06/01,データA,データB,データC],[2021/06/02,データA,データB,データC]]

【配列B】
[[2021/05/31,データD,データE,データF],[2021/06/01,データD,データE,データF],[2021/06/02,データD,データE,データF]]

該当のソースコード

Google

1DataArrayFormDataCenter.sort(); 2//片方のシートの日付は降順のため、ソートしています。 3DataArrayFormDataBase.sort(); 4//片方のシートの日付は降順のため、ソートしています。 5for(var h=0;h<=DataArrayFormDataCenter.length;h++){ 6DataArrayFormDataCenter[h].push(DataArrayFormDataBase[h]); 7 8}

補足情報(FW/ツールのバージョンなど)

配列A、配列Bはそれぞれ別のスプレッドシートから、日付を指定し、対応したデータ列を読み取って格納しています。
両シートのデータを1つの配列に結合して、まとめて別シートに決まったフォマットで出力する予定です。
pushする場合は各配列から、かぶった日付を配列位置指定で削除する予定です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

DataArrayFormDataCenter[h]がどこかで配列ではなくundefinedになっています。
console.log(DataArrayFormDataCenter[h]);で配列になっているか確認してください。

投稿2021/06/10 11:28

fukatani

総合スコア626

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TopingMado

2021/06/10 11:51

早速のお回答、ありがとうございます! for文のloop回数が1回多かったため、1つ undefinedになってました。
guest

0

ベストアンサー

もしかしてですが、エラーの原因はfor文の繰り返し条件を誤っているだけでは?
h<=DataArrayFormDataCenter.length
となっているために、最後に存在しない配列に処理を行っているようです。

javascript

1for(var h=0;h<DataArrayFormDataCenter.length;h++){

まぁ、恐らくエラーはなくなっても期待している結果になるとは限りませんが、それは次のステップかな?

投稿2021/06/10 11:28

hiro_app

総合スコア123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TopingMado

2021/06/10 11:49

早速の回答、ありがとうございます! for文にある「<=」を「<」に変更しましたらpushを実行できました。 二次元配列をそのままpushされてしまいましたが、下記のようにコード改善しましたらなんとかなりました! DataArrayFormDataCenter.sort(); DataArrayFormDataBase.sort(); for(var h=0;h<DataArrayFormDataCenter.length;h++){ for(var e=1;e<DataArrayFormDataBase[0].length;e++){ DataArrayFormDataCenter[h].push(DataArrayFormDataBase[h][e]); }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問