blogこんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。二次元配列に対してfor文などでループをする際に、どのような順序で二次元配列内の要素が処理されるかを画像や動画を用いて視覚的に紹介します。「getValuesで二次元配列を作成した。〇列のデータを全て◇したいけど、どのようにループすればいいかわからない」というような方の参考になると思います。特定の行の値のみ処理したい場合すべての値をZ字の順番で処理したい場合すべての値をN字の順番で処理したい場合まとめおさらいループの前にまずスプレッドシートの値をgetValuesで取得する方法と、取得した二次元配列の要素を指定する方法をおさらいします。おさらいが不要の方は次の項目まで飛ばしてください。getValuesで二次元配列を作成する今回は上記スプレッドシートをサンプルとして使用します。A1~D5までの表の値を二次元配列productListに格納しましょう。sh.getRange(1,1,5,4).getValues();A1~D5の範囲はgetRange(1,1,5,4)で指定しました。getValuesを使い、getRangeで指定した範囲(A1~D5)の値をproductListに二次元配列として格納しました。productListは現在以下のような二次元配列になっています。スプレッドシートの表と同じような見た目ですね。getRangeやgetValuesのより詳しい解説については以下記事をご覧ください。www.yukibnb.com二次元配列の値を指定(取得)する二次元配列productListに格納されたデータを指定する方法は上記2種類あります。]を丸々指定することです。]を丸々指定できます。ふたつめの「二次元配列内の一次元配列の要素を指定したい場合」というのは、"orange"のような値を指定することです。[行][列]のイデックス番号を入力すると値を指定できます。二次元配列のより詳しい解説については以下記事をご覧ください。www.yukibnb.comループの処理順序を徹底解説おまたせしました!ここからは二次元配列のループの処理順序を見ていきましょう。for文でループを書く時の変数はiやjが一般的ですが、この記事では理解しやすいようにrとcを使用します。]が一つだけなのでシンプルです。Logger.log(productList[r][2]);}例えばPrice(JPY)の列の値のみを処理したい場合、上記のようになります。Price(JPY)の列はインデックス番号2で固定なので列はループする必要はありません。行のインデックス番号のみループします。Logger.log(productList[1][c]);}例えばA01の行の値のみを処理したい場合、上記のようになります。A01の行はインデックス番号1で固定なので行はループする必要はありません。列のインデックス番号のみループします。}}すべての値を処理したい場合、ループをふたつ使う必要があります。Z字の順番で処理するには行のループの中に列のループを入れます。※for文の中にさらにfor文を入れることを「for文をネストする」や「for文を入れ子にする」と言います。列この場合、内側のループ(列)が終わると外側のループ(行)が進みます。}}N字の順番で処理するには列のループの中に行のループを入れます。行この場合、内側のループ(行)が終わると外側のループ(列)が進みます。二次元配列をループする際の処理順序を視覚的に紹介しました。二次元配列のループは頭でわかっていてもこんがらがることがあるので、そういう時に本記事が参考になればうれしいです。