この記事でわかること

今回のテーマは、Pythonのライブラリを用いて、Googleスプレッドシートからデータを取得するテクニックを紹介したいと思います。対象となる読者は、Pythonを少し扱ったことがあるけど活用方法がわからない方、Googleスプレッドシートからデータの取得を自動化したい方を想定しています。

  • 【目次】
    1. pandasライブラリよりcsvファイル形式のデータを扱う。
    2. gspreadライブラリで、Googleスプレッドシートよりデータを取得する。

①pandasライブラリを使ったxlsxファイルの読み込み

Googleスプレッドシートの操作を紹介する前に、準備運動としてよく使うpandasライブラリを紹介します。pandasライブラリとは、データを効率的に扱うことができるライブラリです。

※pandasのドキュメンテーション(公式サイト)

pandasは、2008年にAQR Capital Managementよって開発されたライブラリのようです。現在の世界中の同志たちにより支えられているオープンソースのようです。2015年以降は、NumFOCUS(https://numfocus.org/sponsored-projects)より支援を受けているようです。

pandasの使用例

  • Pythonで取り込む「country_data.xlsx」を用意します。
ファイルは以下のリンクから取得できます。
「country_data.xlsx」は各国の属性情報が入ったデータになります。
データイメージ(一部抜粋)
  • 以下の通り、3行のプログラムを書きます。プログラムは、上記のExcelファイルを読み込んで、変数に出力する内容になります。
プログラム実行前
  • プログラム実行後、コンソールにはExcelファイルの中身が出力されています。
printコマンドより、変数dataに格納された内容が出力されている。
  • 続いて、変数dataの内容をcsv形式ファイルに出力します。
最後行に、以下のプログラムを追記しています。
data.to_csv(“C:/data_Sample/export_data.csv”)
  • プログラムを実行後、所定のフォルダにexport_data.csvが出力されています。
to_csvコマンドより、export_data.csvが出力されています。

以上で、Excelファイルの内容をcsvファイルに出力することができました。

次に、Googleスプレッドシートを操作するgspreadライブラリを操作する手順を紹介します。


②gspreadライブラリを使って、Googleスプレッドシートの操作

gspreadライブラリとは、Googleスプレッドシートを操作できるライブラリです。

例えば、Googleスプレッドシートのシートやセルを参照することで、値の加工や読み取りなど様々な操作ができます。

※gspreadのドキュメンテーション(公式サイト)

gspreadライブラリは、GitHubで管理されているフリーで利用できるオープンソースです。


以下の順で手順を紹介します。

  • GoogleのプロジェクトAPIアクセスを有効化する。
  • Googleスプレッドシートを共有設定する。
  • PythonからGoogleスプレッドシートのデータを呼び出す。

最初の説明はPythonを学習するというよりはGoogle APIの利用方法が中心になりますが、ご容赦願います。またGoogle APIの設定手順は、2020年10月20日時点の手順になります。今後、バージョン等が変わった場合は、手順が変わる可能性があります。

GoogleのプロジェクトAPIアクセスを有効化する。

最初の作業として、Googleスプレッドシートを参照できるようにするために、プロジェクトAPIアクセスを作成します。

  • Googleコンソールに移動する。

Googleコンソールでは、さまざまなAPIを有効化設定ができます。

ここではプロジェクトAPIを作成し、Google APIとGoogle Sheet APIを有効化します。なお、Googleコンソールを利用するためにはGoogleアカウントを作成している必要があります。

最後に共有ファイルにアクセスするための認証情報の作成を行います。

※Googleコンソール
  • Googleコンソールに移動したら、「フォルダを作成」をクリックする。
  • プロジェクト名を入力する。ここでは、Techblogとしています。
  • 作成完了のポップアップが表示されることを確認する。
  • リストに「Techblog」が追加されていることを確認する。
  • 左上の「Google APIs」をクリックするとサイドバーが出てくるので、ライブラリをクリックする。
  • ここからはGoogle Drive APIを有効化するために「Google Drive API」をクリックする。
上部の検索バーで、Google Driveと入力すると、候補が絞られます。
Google APIsの横にプロジェクト名称(Techblog)があることに留意。
  • 「Google Drive API」を有効化する。
今回のプログラムではGoogle Driveに保管しているGoogleスプレッドシート
を操作するため、Google Drive APIを有効化する必要があります。
  • 有効化すると、画面が切り替わります。
  • 次にGoogle sheet APIを有効化するために「Google sheet API」をクリックします。
上部の検索バーで、sheetと入力すると、候補が絞られます。
  • 「Google sheets API」を有効化する。
ここで有効化することにより
  • 有効化すると、画面が切り替わります。
  • 各APIがリストに表示されていることを確認する。
左上の「Google APIs」 → 「ダッシュボード」で確認できます。

Googleスプレッドシートを共有設定する。

次に、Pythonプログラムを実行した際に、Googleスプレッドシートに共有可能なアカウントであることを認識させる手順を実施します。

  • 認証情報を作成するために認証情報をクリックする。
  • 「+認証情報の作成」→「サービスアカウント」をの順にクリックする。
  • サービスアカウントの詳細でサービスアカウント名を入力し、「作成」をクリックする。
サービスアカウント名は、python_techblog
  • 「ロールの選択」で選択項目を決定する。手順は1~3の通り。

1.ロールの選択をクリックする。
2.「Project」→「編集者」をクリックする。
3.完了ボタンをクリックする。
  • 認証情報のホーム画面に戻ったら、サービスアカウントの編集ボタンをクリックする。
  • 「鍵を追加」をクリックする。
  • 「JSON」を選択し、「作成」ボタンを押下する。
  • jsonファイルがダウンロードされることを確認する。
ブラウザ(Google Crome)の左下にファイルが表示される。
  • Googleスプレッドシートの認証情報として、client_emailが必要になる。
    • 上記でダウンロードしたjsonファイルより、”client_email”に記載している”python-techbolg@techblog-293105.iam.gserviceaccount.com”をコピーする。 なお、jsonファイルの内容は機密情報となるため、他人知られないように気をつけましょう。

    • Googleスプレッドシートを開いて、シート右上の「共有」ボタンをクリックする。
    • 入力欄に、認証情報の作成で用意したclient_emailを入力する。ここで入力したclient_emailはpythonからプログラムを実行する際の認証キーとなります。
    一部入力すると、自身で管理しているメール一覧から候補が検出されます。
    • 「送信」ボタンを押下する。
    ※メッセージは未入力で問題なし。

    PythonからGoogleスプレッドシートのデータを呼び出す。

    • pythonファイルに、以下のソースコードを入力します。
    ① jsonファイルは、「Googleスプレッドシートを共有設定する。」の手順で作成したファイル。
    ②スプレッドシートのアドレス。取得元は、次のイメージで説明します。          
    ※spyderというアプリで起動しています。                     

    ※スプレッドシートのアドレス

    赤枠で囲った部分をスプレッドシートのアドレスと使用する。
    • pythonファイルを実行する。(「F5」キーで実行できます。)
    右下の赤枠で実行結果を確認。

    以上より、Pythonの活用例を紹介させていただきました。Pythonは外部サービスと連携するライブラリが豊富であるため、外部サービスからデータを取得して、アプリ開発や情報収集が必要となったときは、Pythonを活用する機会があるかもしれません。

    長い記事に目を通していただき、ありがとうございました。