【FileMaker】Google SpreadSheetからJSON形式でデータを取得する(v4対応)

2021/08/02で、Google Sheets APIのv3がshutdownとなりました。
便利に使っていたのですが、他の仕事をしているうちにv4にするのをすっかり忘れていたので、今回はv4に対応した記事になります。

変更点などは、こちらの[ブログ「Google Sheets API v4を適当に叩いて適当にデータをJSONで取得する
](https://taiki-t.hatenablog.com/entry/2016/10/14/031124)が詳しいです。（神！）

この記事では、[Claris FileMaker](https://www.claris.com/ja/)で実装する際の内容になります。

# FileMaker対応バージョン
JSON,curlを取り扱いますので、ver.16以降でお試しください。
このページでのサンプル作成は、ver.19で行いました。

# Google Sheets APIの設定
v4からは、APIキーが必要になりますので、認証情報を設定してAPIキーを取得します。
今までのGoogle関連のAPIの認証情報とほぼ同じなので、取得方法については、ググるとたくさん出てくると思います。
参考までに簡易的に紹介します。

## 前提
Google Cloudアカウントを取得している必要があります。

## プロジェクトの作成
[Google Cloud Platform](https://console.cloud.google.com/)で適当にプロジェクトを作成します。
![スクリーンショット 2021-08-18 18.09.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/3c06dfb2-4d8e-9e53-afef-92b00e43dcdd.png)
名前をつけて、組織は設定しなくても大丈夫ですが、法人アカウントの場合は何かしらの設定が必要かもしれません。
![スクリーンショット 2021-08-17 11.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/3c933425-5414-78a6-0106-5e1941293583.png)

## 使用するAPIを有効にする
ライブラリから、Google Spread APIを探し、有効にします。
![スクリーンショット 2021-08-17 12.07.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/70eb95b6-29f0-ee5e-3b97-f2aaf8e76842.png)

## APIキーを生成する

::: note info
Google CloudのAPIキー使用についての公式も一読してください。
→<a href="https://cloud.google.com/docs/authentication/api-keys?hl=ja" target="_blank" >Google Cloud APIキーの使用(Using API keys)</a>
:::

Google Spread SheetにアクセスするAPIキーを生成します。
![スクリーンショット 2021-08-17 12.12.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/d922a9a0-f7c0-a452-1ccc-b82ac5859b58.png)

生成されたAPIキーをコピーボタンでコピーし、どこかにメモっておきます。
その後、キーの制限をします。
![スクリーンショット 2021-08-17 12.12.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/0272a235-6942-61ed-501b-aed672fcfb0d.png)

アプリケーション制限は、テストする際は「なし」でOKですが、運用や運用を想定したテストの時には、然るべき制限に設定してください。
![スクリーンショット 2021-08-17 12.14.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/786c6433-53c3-50be-fc4d-4d283432e6d3.png)

APIの制限として、Google Sheets APIを選択します。
![スクリーンショット 2021-08-17 12.15.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/9b5d9c91-20f3-8d8a-81dc-a1e997d667e2.png)

APIキーの準備は、これでOKです。

:::note info
Google Cloudの認証の概要については、公式を必ず読んでください。
→<a href="https://cloud.google.com/docs/authentication?_ga=2.196881381.-872164763.1629168036" target="_blank">Google Cloud 認証の概要(Authentication overview）</a>

今回はAPIキーのみで実装可能な範囲しか取り扱っていませんが、各種認証を取り扱う際に、何をどう使ったらいいかの判断に迷わないよう、「認証ストラテジー」（英語ページの場合は、"Authentication strategies"）の部分は押さえておきましょう。
:::

# Google Spread Sheetの設定
## 共有設定
アクセスしたいSpread Sheetの共有設定をします。
v3では、「ウェブに公開」という共有方法でしたが、v4では、共有設定をすることで、アクセスが可能になります。
「リンクを知っている全員」への共有設定にし、表示されているリンクをコピーします。
![スクリーンショット 2021-08-18 17.12.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/fa11dc8a-e271-639f-a044-1d9f2707712a.png)

## spreadsheetIdを取得する
URLアドレスバーや共有リンクには、spreadsheetIdがありますので、メモっておきます。

```
https://docs.google.com/spreadsheets/d/｛spreadsheetId｝/edit?usp=sharing
```

:::note info
Google Sheets APIの読み込み仕様については、以下を参照してください。
→<a href="https://developers.google.com/sheets/api/samples/reading?hl=ja" target="_blank">Basic Reading</a>
:::

## シート名の取得
アクセスするシート名をメモっておきます。
名前の設定は、なんでもいいです。
ここでは、サンプルとしてよく使われる、"Sheet1"という名前にしています。
![スクリーンショット 2021-08-18 19.12.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/8621b6e6-b58b-be8b-c9a0-2811711da59f.png)

ここまでが、Google Spread Sheet側の設定です。

## v4に対応したhttps文
v4でのアクセスURLは、次のようになります。

```
https://sheets.googleapis.com/v4/spreadsheets/｛spreadsheetId｝/values/｛sheetName｝?key=｛APIKey｝
```

これに、先程取得したspreadsheetIdと、シート名（sheetName）をセットし、生成したAPIキーを引数としてくっつけます。

## テスト
FileMakerに実装する前にブラウザからもアクセスできるかを確認しておきます。
テスト用に用意した、Google Spread Sheetは、以下のような感じです。
先程のシートの設定は、このシート内容になります。
![スクリーンショット 2021-08-18 19.27.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/69012f50-9fcf-61e0-5058-cb8c618d9c71.png)

作成した、v4対応のアクセスURL文をブラウザのURIバーに設定し、実行します。
取れましたね。
![スクリーンショット 2021-08-18 19.27.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/e03c3417-2da1-c441-43b3-821485f579ae.png)



さ、やっとFileMakerからの操作です。

# FileMakerからのアクセス
これを、スクリプトで指定します。

## スクリプト
[URL から挿入](https://help.claris.com/ja/pro-help/content/insert-from-url.html)を使います。
![スクリーンショット 2021-08-18 19.24.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/7d069513-0aba-39b1-6531-183f8e60e88a.png)
APIキーなど、生成した情報はスクリプトに直書きせず、テーブルにフィールドを作って保存するなどをしてください。

## 実行
デバッガで実行してみましょう。
ブラウザテストと同様、取得できましたね。
![スクリーンショット 2021-08-18 19.32.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/28c4fb50-d7ed-32f3-74c7-0d505736c872.png)
v4は、パラメータに指定しなくても基本JSONで返ってくるので、あとはJSON関数で煮るなり焼くなり好きなだけこねくり回してください。

# v3からv4へバージョンアップ必須
すでにv3は使用できないので、早急にv4へバージョンアップしてくださいね。
この方法でのデータ取得は、v3よりちょっと準備が手間ですがOAuth2.0の認証作業はないのでスクリプト自体はさほどv3と変わらず実行できると思います。