getRangeいろいろ（Google Apps Script、SpreadSheet）

## はじめに
セルの `getRange()` の引数の種類がたくさんあって列だっけ？行だっけ？ってよくなるので、各メソッドの使用例と範囲指定のイメージ画像をつけて羅列してみることにしました。

## サンプルスプレッドシート
この画像のデータをいろいろ `getRange()` して、どのように範囲指定できるか **背景色をピンク** にして、確認してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/4665541d-e70a-b8b6-ffb9-55d9a440c204.png)
## 前提
コードに出てくる `sheet` はアクティブシートで初期化してある前提です。

```javascript
  var sheet = SpreadsheetApp.getActiveSheet();
```
## getRange(row, column)

- [getRange(row, column)](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow,-column)

``` javascript
  var range = sheet.getRange(1, 4);
  range.setBackground('pink'); // 背景色をピンクに
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/c9e9b3b1-2da4-64fb-370d-56e97acf540a.png)

### 列番号（column）について
（ご存知かと思いますが念の為、）引数の**column**はA列から順番に、1,2,3...となります。**row**は1行目、2行目...とそのまんまですね。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/376a1bbc-5cf9-613b-a927-c07182f3fa54.png)

**※以降から背景色ピンクにするコードは省略します。**
## getRange(row, column, numRows)

- [getRange(row, column, numRows)](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow,-column,-numrows)

```javascript
  var range = sheet.getRange(2, 4, 3);
```
私はどう範囲指定されるのかイメージしづらかったので、何番目のセルか番号振りました。

- 範囲指定の**開始位置**が、2行、4列目のセル
- **開始位置のセルから**3行を範囲指定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/5ad39336-46d6-23ec-e937-b20b2b821bb9.png)


## getRange(row, column, numRows, numColumns)

- [getRange(row, column, numRows, numColumns)](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow,-column,-numrows,-numcolumns)

```javascript
  var range = sheet.getRange(3, 2, 4, 3);
```
よく忘れるのでこれも番号振ってみました。

- 範囲指定の**開始位置**が、3行目、2列目のセル
- 範囲指定の**終了位置のセル**が、**開始位置のセルから**4行、3列目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/325d59c3-3517-96f4-6c3c-bb6ca24500a8.png)

## getRange(a1Notation)

- [getRange(a1Notation)](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangea1notation)

```javascript
  // アクティブシートのとき
  var range = sheet.getRange('C1');
  
  // シート名を指定するとき
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  range = ss.getRange('シート1!C1');
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/52e33d1e-458a-1235-5bc5-105bd2dda7a5.png)

- 行番号や列番号は変数にすることもできます。

```javascript
  var row = 1;
  var range = sheet.getRange('C' + row); // sheet.getRange('C1')と同じ
  
  var col = 'A';
  range = sheet.getRange(col + row); // sheet.getRange('A1')と同じ

```

- 範囲指定するとき

```javascript
  var range = sheet.getRange('A1:D4');
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/a6364fd8-b82c-77fd-ff0b-e98234d6123a.png)

- A3から、A列最終行まで

```javascript
var range = sheet.getRange('A3:A');
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/64a412ef-68d9-d945-245e-726bf54a2549.png)


## getRangeList(a1Notations)

- [getRangeList(a1Notations)](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangelista1notations)

```javascript
var rangeList  = sheet.getRangeList(['A1:B4', 'C5:D8']);
```
まだ使ったことなかったので、へー！って感じでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181001/8f561810-122b-8f18-5d7a-51c476c69c92.png)

## さいごに
こんどgetValuesいろいろも書きたいと思います。 :cat: