[Google Sheets API] 行、列を挿入・追加・削除・移動する

Google Sheets API v4（Java）を使用して、
スプレットシートの行または列を挿入、追加、削除、移動する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
```java
//例：
requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
```
:::

:::note info
その他のGoogle Sheets APIは、下記の記事を参照ください。
[⧉[Google Sheets API] JavaでスプレットシートのメニューとAPIを関連づけてみた](https://qiita.com/doran/items/2f6f8932b994fbd1a170)
:::

|No|目次|
|---|---|
|1|[行、列の挿入](#1-行列の挿入)|
|2|[行、列の追加](#2-行列の追加)|
|3|[行、列の削除](#3-行列の削除)|
|4|[行、列の移動](#4-行列の移動)|

## 1. 行、列の挿入
指定したシートに位置を指定して行または列を挿入します。

**サンプル コード**
```java
public Request insertDimension(String fileId, Integer sheetId) {
    Request request = new Request();

    DimensionRange range = new DimensionRange();
    range.setSheetId(sheetId);
    range.setDimension("ROWS"); 	//行(ROWS)か、列(COLUMNS)
    range.setStartIndex(1); 		//挿入開始位置(0スタート)
    range.setEndIndex(4); 			//挿入終了位置(0スタート)

    InsertDimensionRequest r = new InsertDimensionRequest();
    r.setRange(range); 				//挿入位置
    //挿入される行、列の書式の継承
    //true:挿入位置より1つ前の書式で挿入。false:挿入位置の書式で挿入
    r.setInheritFromBefore(true);

    request.setInsertDimension(r);
    return request;
}
```
**実行結果**
2行目〜4行目に行(ROWS)が追加されました。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/ead9af7a-9318-ad2f-ebf2-3cb525141560.png">
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/f8e763bd-8de9-223c-b87b-634ba82a2ecd.png">

## 2. 行、列の追加
現在の行、列の最後に追加します。

**サンプル コード**
列に3列追加します。
```java
public Request appendDimension(Integer sheetId) {
    Request request = new Request();

    AppendDimensionRequest r = new AppendDimensionRequest();
    r.setSheetId(sheetId);       //追加するシートID
    r.setDimension("COLUMNS");   //行(ROWS)か、列(COLUMNS)
    r.setLength(3);
    
    request.setAppendDimension(r);
    return request;
}
```
**実行結果**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/4631b26d-50d8-e6b0-1e29-c58faec2536b.png">

後ろに3列追加されました。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/e85a4aff-83bd-9738-43ea-a2feb82559c6.png">

## 3. 行、列の削除
指定したシートの行または列を削除します。

**サンプル コード**
```java
public Request deleteDimension(String fileId, Integer sheetId) {
    Request request = new Request();

    DimensionRange range = new DimensionRange();
    range.setSheetId(sheetId);
    range.setDimension("COLUMNS"); 	//行(ROWS)か、列(COLUMNS)
    range.setStartIndex(1); 		//挿入開始位置(0スタート)
    range.setEndIndex(3); 			//挿入終了位置(0スタート)

    DeleteDimensionRequest r = new DeleteDimensionRequest();
    r.setRange(range); 				//削除位置

    request.setDeleteDimension(r);
    return request;
}
```
**実行結果**
2列目(B列)〜3列目(C列)の列(COLUMNS)が削除されました。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/ead9af7a-9318-ad2f-ebf2-3cb525141560.png">
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/6c7d9fb8-550e-34b6-d459-f456bcd8feb9.png">

## 4. 行、列の移動
指定したシートの行または列を移動します。

**サンプル コード**
```java
public Request moveDimension(String fileId, Integer sheetId) {
    Request request = new Request();

    DimensionRange range = new DimensionRange();
    range.setSheetId(sheetId);
    range.setDimension("ROWS"); 	//行(ROWS)か、列(COLUMNS)
    range.setStartIndex(2); 		//移動開始位置(0スタート)	
    range.setEndIndex(4); 			//移動終了位置(0スタート)

    MoveDimensionRequest r = new MoveDimensionRequest();
    r.setDestinationIndex(5); 		//挿入位置
    r.setSource(range);

    request.setMoveDimension(a);
    return request;
}
```
**実行結果**
３行目〜4行目の行が5行目の下に移動しました。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/ead9af7a-9318-ad2f-ebf2-3cb525141560.png">
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/82815038-3d02-2fbd-c6b9-68d6d6c08bdd.png">

おしまい。。