ここは、GAS(Google Apps Script)でスプレッドシートを操作する方のためのサイトです。
以下では、同じセル番地を3種類の形式であらわしています。
R1C1形式 | 2次元配列 | A1形式 | ||
---|---|---|---|---|
A | B | C | D | E | F | G | H | I | J | |
---|---|---|---|---|---|---|---|---|---|---|
1 | ||||||||||
2 | ||||||||||
3 | ||||||||||
4 | ||||||||||
5 | ||||||||||
6 | ||||||||||
7 | ||||||||||
8 | ||||||||||
9 | ||||||||||
10 |
例えば、スプレッドシートAからある特定の項目だけを拾ってきて、スプレッドシートBに内容を転記する場合を考えてみます。
GASにまだ慣れないうちは、getRange()をfor文で回したりしがちです。
しかし慣れてくると、getDataRange().getValues()でシートをまるごと2次元配列で取得、必要な配列だけを取り出しsetValues()できるようになります。
特に大量のデータを扱う場合は、配列の方が格段に処理が軽く早く便利です。
しかし、getRange(行番号,列番号)の行番号,列番号がそれぞれ「1」で始まるのに対して、
2次元配列をインデックス(data[行配列][列配列])で取得する時はそれぞれ「0」で始まります。
この「1」のズレにつまずくことが多かったので、確認のためこのサイトを作りました。
上のコードを確認した後で、以下のパラメータを設定してみてください。
初期値 | 増加値 | 列配列 |
---|---|---|
A | B | C | D | E | F | G | H | I | J | |
---|---|---|---|---|---|---|---|---|---|---|
1 | ||||||||||
2 | ||||||||||
3 | ||||||||||
4 | ||||||||||
5 | ||||||||||
6 | ||||||||||
7 | ||||||||||
8 | ||||||||||
9 | ||||||||||
10 |
シートの内容がさらに複雑化すると、二重ループで行も列もジャンプしながら取得したり、setしていくことになります。
私にとってはこれが頭痛の種なんですが…。皆さまの頭痛が少しでも軽減されることをお祈り申し上げます。