はじまり
![リサちゃん](https://www.endorphinbath.com/wp-content/uploads/2021/10/02_nayutarisa_015.png)
あー、もう、どうなってんだぁ〜!?
![135ml](https://www.endorphinbath.com/wp-content/uploads/2021/10/01_kinkinbeer135ml_001-2.jpg)
どうしたどうした?
![リサちゃん](https://www.endorphinbath.com/wp-content/uploads/2021/10/02_nayutarisa_015.png)
PythonでGoogleスプレッドシートを編集したいんだが、そのための認証が面倒でね・・・
どこで躓いたが分からなくなってしまったのだよ・・・!
![135ml](https://www.endorphinbath.com/wp-content/uploads/2021/10/01_kinkinbeer135ml_001-2.jpg)
じゃあ、今回はPythonでスプレッドシートを使うために、
Google Cloud Platformで行う初期設定を書いてみるかあ。
![リサちゃん](https://www.endorphinbath.com/wp-content/uploads/2021/10/02_nayutarisa_016.png)
ヨロシク!
設定作業その1:Google Cloud PlatformでAPIを有効化する
まず、Google Cloud Platformでプロジェクトを作成します。(作成の過程は割愛します。)
そして、GCPのコンソール画面のサイドバーから以下の「ライブラリ」をクリックします。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_01-1024x532.jpg)
以下の画面から、今回必要なAPIを有効化します。今回は2種類のAPIを有効化します。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_02-1024x458.jpg)
そして、「Google Drive API」と「Google Sheets API」を有効化します。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_03-1024x608.jpg)
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_04-1024x691.jpg)
APIが追加できたかどうかを確認します。
今度は、「APIとサービス」の「ダッシュボード」をクリックして以下のような画面で確認します。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_05-1024x502.jpg)
設定作業その2:Google Cloud Platformで認証情報を設定する
外部アプリケーションからスプレッドシートにリクエストするためにクレデンシャル情報を設定します。
「認証情報を作成」をクリックして、「サービスアカウント」を選びます。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_06-1024x468.jpg)
サービスアカウントの設定画面になります。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_07-1024x521.jpg)
編集者を選択します。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_08-1024x560.jpg)
ここは省略します。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_09-1024x510.jpg)
そして、作成したサービスアカウントを確認して、キーの出力を行います・・・
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_10-1024x511.jpg)
「鍵を追加」→「新しい鍵を作成」の順番でクリックします。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_11-1-1024x604.jpg)
秘密鍵をJSONファイルとして作成します。「作成」をクリックする。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_12-1024x652.jpg)
PCにJSONファイル形式のファイルが保存されます。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_13-1024x430.jpg)
余談:Workload Identity 連携について
ちなみに、先程のサービスアカウントのキー出力の画面内の警告文に「代わりにWorkload Identity 連携を使用することをおすすめします。」と書いてありました。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_10-1024x511.jpg)
こちらの連携設定を行った記事は、こちらになっていますので、興味があればご参考ください。
今回の作業では必要ありません。
設定作業その3:Googleスプレッドシートを編集するための設定
権限追加するシートの右上の「共有」ボタンをクリックする。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_14-1024x450.jpg)
IAM設定で追加したサービスアカウントのプリンシパルをコピペします。
そして、そのユーザーを編集者権限にして、送信をクリックします。
![](https://www.endorphinbath.com/wp-content/uploads/2022/02/20220109_15-1024x697.jpg)
確認作業:Pythonコードを実行してみる
設定作業を行った後は、こちらを試してみると動作確認できるかと思います。
import gspread
from oauth2client.service_account import ServiceAccountCredentials
def authorizeGSSToGetWorksheet(credentialJsonFileName : str, gssId : str, sheetName : str):
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(credentialJsonFileName, scope)
gc = gspread.authorize(credentials)
worksheet = gc.open_by_key(gssId).worksheet(sheetName)
return worksheet
jsonKeyFileName = "先ほどダウンロードしたjsonファイルのフルパス"
gssId = "共有設定したスプレッドシートのID"
sheetName = "共有設定したスプレッドシート内の編集したいシート名"
worksheet = authorizeGSSToGetWorksheet(jsonKeyFileName, gssId, sheetName)
cellList = worksheet.findall("検索値")
print(cellList)
gssIdは、URLで言うと、”https://docs.google.com/spreadsheets/d/<この部分>/edit#gid=0″の部分になります。
上述のプログラムを実行してみると、こんな感じの値が返ってくると思うので、スプレッドシートにアクセスできることが確認できると思います。
[<Cell R350C4 'https://qiita.com/ny7760/items/9cdc3407dfda99c21ae1'>]
おしまい
![リサちゃん](https://www.endorphinbath.com/wp-content/uploads/2021/10/02_nayutarisa_001-1.png)
ふい〜、何とか設定できたなあ〜
![135ml](https://www.endorphinbath.com/wp-content/uploads/2021/10/01_kinkinbeer135ml_001-2.jpg)
Pythoから叩けるようになることで、スプレッドシートのデータをnumpyとmatplotlibと組み合わせられるようになります。
良ければ、試してみてください。
![リサちゃん](https://www.endorphinbath.com/wp-content/uploads/2021/10/02_nayutarisa_010.png)
よいぞ〜、よいぞ〜
以上になります!
コメント