[Google Sheets API] スプレットシートのタイトル(名前)、テーマ、その他の情報を設定する

Google Sheets API v4（Java）を使用して、
スプレットシートのタイトル(名前)、テーマ、その他の情報を設定する方法
についてご紹介します。

下記のスプレットシートの情報が設定できます。
・***タイトル（名前）***
　　メニュー：「ファイル」 ⇨　「名前を変更」
　　で変更できる内容と同じです。

・***テーマ***
　　メニュー：「表示形式」 ⇨　「テーマ」
　　で変更できる内容と同じです。
　　<img width="240" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/0d0d852f-c365-c805-228e-801e2b70e7bb.png">

・***その他***
　　メニュー：「ファイル」 ⇨　「設定」
　　で変更できる内容と同じです。
　・***全般タブ***
　　・言語と地域
　　・タイムゾーン
　　　<img width="240" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/2ae54a38-66e2-f408-c9d3-868e2929df87.png">

　・***計算タブ***
　　・再計算
　　・反復計算
　　　<img width="240" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/e0679ebb-a8be-764e-989e-41a5af8b657a.png">

:::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-その他)|
||1|[全般 - 言語と地域](#31-全般---言語と地域)|
||2|[全般 - タイムゾーン](#32-全般---タイムゾーン)|
||3|[計算 - 再計算](#33-計算---再計算)|
||4|[計算 - 反復計算](#34-計算---反復計算)|

**サンプル コード**
スプレットシートの情報を設定するリクエストをサンプルとして紹介します。
各々の設定は以降の記事を参照ください。

更新したい内容はsetFieldsで指定します。
この指定にない場合は更新されません。
複数を同時に更新したい場合は、「,」で繋げます。
|field|更新内容|
|---|---|
|title|タイトル(名前)|
|spreadsheetTheme|テーマ|
|locale|その他 - 全般 - 言語と地域|
|timeZone|その他 - 全般 - タイムゾーン|
|autoRecalc|その他 - 計算 - 再計算|
|iterativeCalculationSettings|その他 - 計算 - 反復計算|
```java
public Request updateSpreadsheetProperties(Integer sheetId) {
    Request request = new Request();
            
    SpreadsheetProperties prop = new SpreadsheetProperties();

	//「タイトル（名前）」の設定
	prop.setTitle("ファイル名");
 
    //「テーマ」の設定
    SpreadsheetTheme theme = new SpreadsheetTheme();
    prop.setSpreadsheetTheme(theme);
    
    //「その他」の設定
	prop.setLocale("jp");                      //全般 - 言語と地域
	prop.setTimeZone("Asia/Tokyo");            //全般 - タイムゾーン
	prop.setAutoRecalc("ON_CHANGE");           //計算 - 再計算
	IterativeCalculationSettings it = new IterativeCalculationSettings();
	prop.setIterativeCalculationSettings(it);  //計算 - 反復計算
    
    UpdateSpreadsheetPropertiesRequest r = new UpdateSpreadsheetPropertiesRequest();
    r.setFields("title,spreadsheetTheme");     //変更するフィールドを指定
    r.setProperties(prop);
    
    request.setUpdateSpreadsheetProperties(r);
    return request;
}
```
## 1. タイトル(名前を設定する)
スプレットシートのタイトル名を設定します。

**サンプル コード**
```java
prop.setTitle("ファイル名");
```
## 2. テーマ
テーマを設定します。

テーマのカラーは下記の９種類あります。テーマを設定する場合は
全種類の指定が必須です。
種類のタイプは、ThemeColorPairクラスのsetColorTypeメソッドで指定します。
|type|種類|
|---|---|
|TEXT|テキスト|
|BACKGROUND|グラフの背景|
|ACCENT1|アクセント1|
|ACCENT2|アクセント2|
|ACCENT3|アクセント3|
|ACCENT4|アクセント4|
|ACCENT5|アクセント5|
|ACCENT6|アクセント6|
|LINK|ハイパーリンク|

**サンプル コード**
```java
SpreadsheetTheme theme = new SpreadsheetTheme();

//プライマリ フォント ファミリの名前の設定
theme.setPrimaryFontFamily("Arial");

//テーマカラーの設定
List<ThemeColorPair> themeColors = new ArrayList<>();
ThemeColorPair p1 = new ThemeColorPair();
p1.setColor(new ColorStyle().setRgbColor(new Color().setRed(1.0f).setGreen(0f).setBlue(0f)));
p1.setColorType("TEXT");
themeColors.add(p1);

ThemeColorPair p2 = new ThemeColorPair();
p2.setColor(new ColorStyle().setRgbColor(new Color().setRed(0f).setGreen(1.0f).setBlue(0f)));
p2.setColorType("BACKGROUND");
themeColors.add(p2);

ThemeColorPair p3 = new ThemeColorPair();
p3.setColor(new ColorStyle().setRgbColor(new Color().setRed(0f).setGreen(0f).setBlue(1.0f)));
p3.setColorType("ACCENT1");
themeColors.add(p3);

ThemeColorPair p4 = new ThemeColorPair();
p4.setColor(new ColorStyle().setRgbColor(new Color().setRed(1.0f).setGreen(1.0f).setBlue(0f)));
p4.setColorType("ACCENT2");
themeColors.add(p4);

ThemeColorPair p5 = new ThemeColorPair();
p5.setColor(new ColorStyle().setRgbColor(new Color().setRed(1.0f).setGreen(1.0f).setBlue(1.0f)));
p5.setColorType("ACCENT3");
themeColors.add(p5);

ThemeColorPair p6 = new ThemeColorPair();
p6.setColor(new ColorStyle().setRgbColor(new Color().setRed(0.5f).setGreen(0f).setBlue(0f)));
p6.setColorType("ACCENT4");
themeColors.add(p6);

ThemeColorPair p7 = new ThemeColorPair();
p7.setColor(new ColorStyle().setRgbColor(new Color().setRed(0f).setGreen(0.5f).setBlue(0f)));
p7.setColorType("ACCENT5");
themeColors.add(p7);

ThemeColorPair p8 = new ThemeColorPair();
p8.setColor(new ColorStyle().setRgbColor(new Color().setRed(0f).setGreen(0f).setBlue(0.5f)));
p8.setColorType("ACCENT6");
themeColors.add(p8);

ThemeColorPair p9 = new ThemeColorPair();
p9.setColor(new ColorStyle().setRgbColor(new Color().setRed(0.5f).setGreen(0.5f).setBlue(0f)));
p9.setColorType("LINK");
themeColors.add(p9);

theme.setThemeColors(themeColors);
prop.setSpreadsheetTheme(theme);
```

## 3. その他
その他のスプレットシート情報を設定します。

#### 3.1. 全般 - 言語と地域
言語と地域の設定をします。

関数、日付、通貨などの表示形式の詳細に影響します。

ISO639の言語コードを指定します。

**サンプル コード**
```java
prop.setLocale("jp");//ISO 639 言語コード
```
#### 3.2. 全般 - タイムゾーン
タイムゾーンの設定をします。

スプレッドシートの履歴はこのタイムゾーンで記録されます。
この設定は時間に関係する機能すべてに影響します。

タイムゾーンIDを指定します。

**サンプル コード**
```java
prop.setTimeZone("Asia/Tokyo");//タイムゾーンID
```
#### 3.3. 計算 - 再計算
再計算の設定をします。

NOW、TODAY、RAND、RANDBETWEEN の更新頻度を設定します。

次のreclacをどれか一つ、文字列で指定します。
|recalc|内容|
|---|---|
|ON_CHANGE|変更時|
|MINUTE|変更時と毎分|
|HOUR|変更時と毎時|

**サンプル コード**
```java
prop.setAutoRecalc("ON_CHANGE");
```
#### 3.4. 計算 - 反復計算
反復計算を設定します。

循環参照を含む数式の解を反復計算で求めるかどうかを決めます。
詳しくは[⧉Googleドキュメント反復計算に関する情報](https://support.google.com/docs/answer/58515)
をご覧ください。

最大反復回数としきい値を指定します。

**サンプル コード**
```java
IterativeCalculationSettings it = new IterativeCalculationSettings();
it.setMaxIterations(0);          //最大反復回数
it.setConvergenceThreshold(0d);  //しきい値

prop.setIterativeCalculationSettings(it);
```
<br>
おしまい。。