Python から Google Spread Sheets の情報を取得するまでの環境設定

Tech

Python を使って、Google Spread Sheetsの情報を取得するまでの環境構築とPythonコードに関して説明します。

これは、キノコードさんの以下のYoutube動画の説明に沿って、私独自のスプレッドシートを読むまでを記載しています。

全体的な流れ

  1. Google Cloud Platformのプロジェクトを作成
  2. Google Drive APIを有効にする
  3. Google Sheets APIを有効にする
  4. 外部アプリからスプレッドシートにアクセスするための認証情報を設定する
  5. スプレッドシート側の共有設定をする
  6. 実際にプログラムを書く

各手順

Google Cloud Platformのプロジェクトを作成

以下のURLにアクセスします。
https://console.developers.google.com/

もし、認証画面がでれば、Googleアカウントでサインインしてください。

プロジェクトを新規で作成します。
下記のような画面の場合は、既に存在するプロジェクト「My Project Test」の所をクリックして、「プロジェクトの選択」画面を開きます。

「新しいプロジェクト」を選択します。

プロジェクト名を記載して、「作成」。

作成の通知が表示されます。これで、プロジェクトの作成が完了です。

Google Drive APIを有効にする

作成したプロジェクトに切り替え、「ライブラリ」を選択。

「APIライブラリ」の画面が表示されます。検索窓に「Drive」と入力。

「Google Drive API」が表示されるので、それを選択。

「有効にする」を選択。

これで、「Google Drive API」が有効になりました。

Google Sheets APIを有効にする

「Google Sheets API」も「Google Drive API」と同様に、有効化します。

検索窓に「sheets」と入力して候補を表示させ、「Google Sheets API」を選択します。

「有効にする」を選択します。

有効になりました。確認のため、左上の「Google APIs」を選択します。

「ダッシュボード」の下の方に、有効化されているAPIが表示されます。

外部アプリからスプレッドシートにアクセスするための認証情報を設定する

「認証情報」> 「認証情報を作成」> 「サービスアカウント」を選択する。

「サービスアカウント名」を記入して「作成」。

次に「ロールを選択」を指定する。

ロール設定のダイアログで、「基本」 > 「編集者」を選択。

「続行」を選択。

「完了」を選択します。

画面下部にサービスアカウントのメールアドレスが表示されます。そのメールアドレスを選択します。

サービスアカウントの詳細画面になるので、下の方の「鍵を追加」> 「新しい鍵を作成」を選択。

ダイアログが表示されるので、「JSON」> 「作成」を選択。

ダウンロードのダイアログで秘密鍵をローカルPCに保存します。以下のダイアログが表示されます。

秘密鍵は、pythonプログラムと同じ場所に格納します。

スプレッドシート側の共有設定をする

対象のスプレッドシートを開き、「共有」を選択します。

サービスアカウントのメールアドレスをコピー&ペーストで設定して、そのメールアドレスを選択。

「通知」のチェックは外して、「共有」。


スプレッドシートの上部に追加メッセージが表示されます。

実際にプログラムを書く

ライブラリのインストール

以下のように、必要なライブラリをインストールします。

pip install gspread oauth2client

Pythonのコードで、Google Spread Sheet へアクセス

以下のコードで、スプレッドシートにアクセスすることができます。「★」の箇所は、各自の環境に合わせて変更してください。

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# JSONファイルを使って認証情報を取得
SCOPES = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
SERVICE_ACCOUNT_FILE = 'kakeibo-293623-3f8274c620ef.json'  # ★環境に合わせて変更

credentials = ServiceAccountCredentials.from_json_keyfile_name(SERVICE_ACCOUNT_FILE)

# 認証情報を使ってスプレッドシートの操作権を取得
gs = gspread.authorize(credentials)

# 共有したスプレッドシートのキーを使ってシートの情報を取得
SPREADSHEET_KEY = '1_q-_AkU6SSTbYoAzTseadVSk5q0Aa06Lv0Ex3pLAfW4' # ★環境に合わせて変更
worksheet = gs.open_by_key(SPREADSHEET_KEY).worksheet("202010") # ★環境に合わせて変更

「SPREADSHEET_KEY」に設定する値は、スプレッドシートのURLの以下の部分をコピペして設定します。

以下のコードで、スプレッドシートの「C4」のセルの値が表示されます。

print(worksheet.acell("C4").value)

また、以下のコードで Pandas のデータフレームにスプレッドシートの中身をすべて設定することができます。

import pandas as pd
df_kakeibo = pd.DataFrame(worksheet.get_all_values())
df_kakeibo


無事、Google Spread Sheetの内容を取り込むことができました!

タイトルとURLをコピーしました