ラズパイ連携に向けたGoogleSheetsAPIにおけるサービスアカウントの作成

#本記事の内容
- ラズパイからGoogleスプレッドシートにデータを書き込む準備のために、GoogleSheetsAPI用のサービスアカウントの作成とGoogleスプレッドシートにおける連携の許可設定を行う。

[前回](https://qiita.com/kanamekun/items/db27968080a1fcf3ad93)、ラズパイにCO2センサーを接続し二酸化炭素濃度の取得をできるようにした。
取得したデータを可視化する手段として、ラズパイからGoogleのAPI経由でGoogleスプレッドシートにデータを書き込む方法を思いついたので、本記事ではGoogleスプレッドシートとの連携に必要な物の準備を行う。

#実施環境
- Windows 10

#手順の流れ 
1. Google Cloud Platformでのプロジェクトの作成
2. Google Cloud PlatformでのAPI有効化
3. APIの認証情報(サービスアカウントとキー)の作成
4. Googleスプレッドシートの作成とサービスアカウントの許可

## 1. Google Cloud Platformでのプロジェクトの作成

[Google Cloud Platform](https://console.cloud.google.com/getting-started?hl=ja)にアクセスする。
Googleアカウントは作成済みの前提。Google Cloud Platformを初めて利用する場合は、利用規約を確認の上同意し、利用目的を選択する。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/9d2e86aa-4a49-c5e6-1ad0-197aef0e524a.png)
"ダッシュボード"を選択する。

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/ce2a31ba-ee00-3f4b-4696-9acb685b4dda.png)
"プロジェクトの作成"をクリックする。

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/1e44e6c0-5cb4-d195-eccc-5d4b68f8cea5.png)
プロジェクト名を入力する。

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/9fd2db50-12ab-06a9-e36a-c78d71a2ef33.png)

"作成"をクリックする。
プロジェクトのダッシュボードが開かれる。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/0d907e70-0eb1-9b40-8182-b2be0a1da75c.png)


## 2. Google Cloud PlatformでのAPI有効化

![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/a692a8cb-6393-5a07-e15a-ec9407f89247.png)
左上のハンバーガメニューから`APIとサービス > ライブラリー`を開く。

![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/4c1ad9b9-2493-5855-c6c3-e08c5886a2ec.png)
検索ボックスで「google sheets api」を検索する。

![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/8a87b65b-874c-ab9c-f17a-f6602cd16a1b.png)
google sheets apiをクリックする。

![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/4ede26c7-afd5-121d-a343-850eb065b47b.png)
"有効にする"をクリックする。


## 3. APIの認証情報(サービスアカウントとキー)の作成

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/a234ae44-93b3-4539-47e8-bc13fddca85e.png)
"認証情報の作成"をクリックする。

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/7821082d-b400-772d-a779-1ea0a1ec4240.png)
"APIを選択"から「Google Sheets API」を選択。

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/500dad7f-c5f0-329e-6a6e-b45562ba77e4.png)
"アプリケーションデータ"を選択。

![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/368c9df7-d79f-4ce5-74ac-65f566fae229.png)
「Compute Engine、Kubernetes Engine、App Engine、Cloud Functions でこの API を使用する予定はありますか？」には、私は予定がないので"いいえ、使用していません"を選択し、"次へ"をクリックする。

![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/56401bce-83bc-862a-4977-39b709f807e3.png)
必要な情報を入力する。

![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/a82eba19-0d3d-fb1c-6889-73d68fefaab7.png)
"作成して続行"をクリックする。

![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/baf41a63-dda6-efaa-9fab-934d395ed06f.png)
この「サービス アカウントにプロジェクトへのアクセスを許可する(省略可)」は一旦飛ばすので、続行をクリックする。
「ユーザーにこのサービス アカウントへのアクセスを許可 (省略可)」も一旦飛ばすので、完了をクリックする。

これでサービスアカウントが作成された。
![17-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/079aed93-4d19-2638-4427-492aa2964cd9.png)
作成されたサービスアカウントをクリックする。

![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/2abd6286-8a15-5672-3d44-aed8f4cda4eb.png)
メール欄のメールアドレスををメモしておく。後ほどのGoogleスプレッドシートとの連携で使用する。
上のメニューから"キー"を選択する。

![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/1da3e758-ab53-88c4-16d5-dcc2add1b767.png)
"鍵を追加"をクリックし、"新しい鍵を作成"をクリックする。

ここではデフォルト選択のJSONで鍵を作るのでそのまま"作成"をクリック。JSONファイルのダウンロードが始まるので、PCの任意のディレクトリにダウンロードしておく。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/bc9fc999-5dad-e952-fb18-859d59c5f762.png)


## 4. Googleスプレッドシートの作成とサービスアカウントの許可

ここからはGoogleスプレッドシートの画面をGoogleのアプリケーションメニューから開く。

![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/bab92df2-5bcc-8d1c-727f-86870b585e7f.png)
Googleのスプレッドシートの画面から"空白"をクリックする。

![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/3485c76b-74ea-5ce5-65b3-1984cfe2455c.png)
右上の"共有"をクリックする。

![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/dc7fc688-7f8b-9c96-152e-8ad021eb15b5.png)
名前を付けて、"保存"をクリックする。

![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/4913a5b9-b0a3-3288-a7f9-ab19ab338c8f.png)
ユーザやグループを追加の欄に先程作成したサービスアカウントのメールアドレスを入力する。

![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/8a0af843-60de-0f52-ab7b-b928b7ceb1b4.png)
"送信"をクリックする。

![26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/a101f760-0618-c10c-137c-bd400d4d76cb.png)

これでサービスアカウント経由で作成したGoogleスプレッドシートを編集できるようになった・・はず。

次回、Raspberry PiにPythonプログラムを作成しGoogleスプレッドシートへのデータ連携を行う。

手順は以上。


# 参考文献
本記事の作成に当たり、以下の情報を参考にさせて頂きました。
- [APIキー、OAuthクライアントID、サービスアカウントキーの違い:Google APIs](https://messefor.hatenablog.com/entry/2020/10/08/080414#3-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%AD%E3%83%BC)
- [サービスアカウントで認証してGoogleSpreadsheetからデータを取得](https://dream-yt.github.io/post/spreadsheet-via-service-account/)