Pythonでスプレッドシートを操作するための準備
Pythonでスプレッドシートを操作する場合、Google Cloud Platform(GCP)のAPIを有効化し、認証を通り抜ける必要があります。
前回はGoogle Cloud Platform(GCP)のAPIを有効化するステップについて手順をご紹介しました。
今回は認証情報の取得についての記事を書きます。
Googleの認証を通す2通りの方法のご紹介
Googleの認証を通す2通りの方法の特徴と違いについて
私が調べた限り、特定の人しかアクセスできない環境のスプレッドシートにアクセスするための認証を通す方法は以下の2通りあります。
それぞれ特長を記載します。(専門知識はないので誤っていたらすみません。)
①OAuth2.0クライアントIDの取得
認証を直接通すためのクライアントIDとクライアントシークレットという文字列を作成・取得し、この2つの要素を持って認証を通す方法になります。
クライアントIDとクライアントシークレットだけ取得すればよいので後で紹介するサービスアカウントよりも手軽に使用可能です。
ただしセキュリティ的におすすめではないのか、2022年秋以降に作成したアプリケーションを公開する場合は使用できないようです。
(テスト環境で数人が使うだけなら問題なさそうです。)
また、初回のアクセス時に手動で認証画面を操作する必要があります。
②サービスアカウントでの認証
プログラムに権限を割り当てるためのアカウントを作成し、そのアカウントで認証を通す方法です。
だれか別の人とスプレッドシートを共有するときと同じ操作で、対象のファイルごとに権限を付与することができ、また認証用のファイルを使用することからセキュリティとして強固なようです。
最初の設定が若干面倒くさいこと、GoogleWorkSpaceアカウントなどでは管理者の設定次第で共有できない運用になっていたりするところがネックです。
スポンサーリンク
①OAuth2.0クライアントIDの取得の手順
まず「認証情報を作成」をクリックして、「OAuthクライアントID」を選択します。
表示された画面で、アプリケーションの種類を選択します。
今回はPythonでPCを用いてのアクセスに使用するため「デスクトップアプリ」を選択します。
次の画面で名前を変更できますが、特にこだわりがなければそのままでもよい気がします。
作成ボタンをクリックします。
OAuthクライアントを作成しましたという画面が表示され、クライアントIDとクライアントシークレットが表示されているので、右端のアイコンをクリックして文字列をコピーしてメモ帳などに控えておきます。
元の画面に戻るとOAuth2.0クライアントIDに作成したアプリケーションの名前が表示されます。
以上でOAuthクライアントIDの作成が完了です。
②サービスアカウントの登録手順
サービスアカウントの登録は3ステップ
サービスアカウントの登録は以下の3ステップで実施します。
OAuthクライアントIDの登録と比べて少し手順が多いですが、慣れると5分もかからずに設定可能です。
01.サービスアカウントの追加
まずは認証情報を作成からサービスアカウントを選択します。
サービスアカウントの詳細の中にサービスアカウント名・サービスアカウントID・サービスアカウントの説明を入力する欄が表示されます。
必須入力はサービスアカウントIDだけですので、サービスアカウントIDを入力します。
サービスアカウントのプロジェクトへのアクセスとか、ユーザーからのサービスアカウントへのアクセスとかはとりあえず使わないので省略して完了をクリックします。
元の画面に戻り、作成したサービスアカウントが表示されるようになります。
02.鍵の追加
続いてこのサービスアカウントで使用する鍵(公開鍵・秘密鍵?)のペアを作成します。
私もよく理解していませんが、Google側とこちらで突合可能なものを作成するみたいです。
リンクになっているサービスアカウントの名前の部分をクリックします。
サービスアカウントの詳細画面にて、上の方に記載されているキーをクリックします。
表示される画面で「鍵を追加」をクリックし、「新しい鍵を作成」をクリックします。
鍵のタイプを聞かれるのでJSONを選択し、作成をクリックします。
以下の表示が出て秘密鍵がダウンロードされますのでPythonからアクセスしやすい場所に保存します。
(ファイル名は変更しない方が良さそうです。私が未熟なだけかもしれませんが、鍵が使えなくなりました。)
03.対象ファイルの共有設定
上記のサービスアカウントと秘密鍵のファイルを使用して認証を通すのですが、スプレッドシートを操作するにはスプレッドシート自体のサービスアカウントへの共有設定も必要です。
手順は以下の通りです。
対象のスプレッドシートを右クリックして共有を選択します。
ユーザーやグループを追加の欄にサービスアカウントのe-mailを入力します。
ダウンロードしたjsonファイルの中に記載されているものをコピペで大丈夫です。
権限を「編集者」にして「共有」ボタンをクリックします。
再度ファイルを右クリックして共有を選択し、サービスアカウントが登録されていればOKです。
Google側の認証設定はここまで
以上で認証情報のGoogle側での設定は完了です。
次はこの設定を使用して認証を通すPythonのコードをご紹介します。
→Pythonのサンプルコードの紹介ページ
コメント