GoogleスプレッドシートをPythonで操作することが可能です。
そして、そのことを可能にするのがgspreadライブラリになります。
本記事の内容
- gspreadとは?
- gspreadのシステム要件
- gspreadのインストール
- Googleの認証
- gspreadの動作確認
それでは、上記に沿って解説していきます。
gspreadとは?
gspreadとは、Googleスプレッドシートを操作するためのインターフェースです。
また、gspreadはPythonで開発されたオープンソースのライブラリです。
主な特徴は、以下。
- Google Sheets API v4対応
- タイトル・キー・URLによるファイルへのアクセス
- セル範囲の読み取り・書き込み・フォーマット
- 共有とアクセス制御
- 適切な更新(API仕様変更への迅速な対応)
以上が、gspreadの説明となります。
次は、gspreadのシステム要件を確認していきます。
gspreadのシステム要件
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Pythonが動けば、OSは問わないようです。
また、サポート対象となるPythonのバージョンは以下。
- Python 2.7+
- Python 3+
何でも来いという状態ですね。
ただ、この状態が望ましいとは思いません。
なぜなら、その分だけプログラムが複雑になりがちだからです。
複雑なプログラムだと、それだけパフォーマンスにも影響を与えるでしょう。
もちろん、gspreadの開発者自身もメンテナンスに苦労しているはずです。
そう考えると、以下のPythonの公式開発サイクルに従うだけで十分だと思います。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
以上、gspreadのシステム要件についての説明でした。
次は、gspreadをインストールしていきます。
gspreadのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 54.2.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、gspreadのインストールです。
gspreadのインストールは、以下のコマンドとなります。
pip install gspread
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version -------------------- --------- cachetools 4.2.1 certifi 2020.12.5 chardet 4.0.0 google-auth 1.28.0 google-auth-oauthlib 0.4.3 gspread 3.7.0 idna 2.10 oauthlib 3.1.0 pip 21.0.1 pyasn1 0.4.8 pyasn1-modules 0.2.8 requests 2.25.1 requests-oauthlib 1.3.0 rsa 4.7.2 setuptools 54.2.0 six 1.15.0 urllib3 1.26.4
そこそこの数のパッケージが、インストールされています。
Googleの認証に関連するパッケージもありますね。
gspreadのインストールに関しては、以上です。
次は、Googleの認証に関して解説します。
Googleの認証
Googleのスプレッドシートへのアクセスには、Google Sheets APIを利用します。
その場合、アプリケーションの認証と許可が必要です。
認証と許可があれば、gspreadでスプレッドシートが操作可能となります。
ここでは、その認証と許可について解説していきます。
認証と許可を行うには、以下の2つの方法があります。
- サービスアカウントの利用(ボット用)
- OAuthクライアントIDの利用(ユーザー用)
今回は、サービスアカウントの利用(ボット用)を選択します。
では、サービスアカウントとは何なのかとなります。
サービスアカウントは、ボット用アカウントだと考えればよいでしょう。
そして、そのボットにスプレッドシートを共有することになります。
共有すれば、ボットがみなさんのスプレッドシートにアクセス可能です。
逆も可能です。
ボットが作成したスプレッドシートを共有することも可能になります。
これらのことを実現するために、手続きとなる作業を行っていきます。
プロジェクトの作成
Google Cloud Platformのリース管理
https://console.cloud.google.com/cloud-resource-manager
上記URLへアクセス。
「プロジェクトを作成」をクリック。
「新しいプロジェクト」画面に遷移します。
適当にプロジェクト名を入力して、「作成」ボタンをクリック。
しばらく待つと、プロジェクトが一覧に表示されます。
(「F5」で更新するのもあり)
プロジェクトの作成はこれで終了です。
次は、APIの有効化に関する説明となります。
APIの有効化
gspreadでは、以下の2つのAPIを利用します。
- Google Drive API
- Google Sheets API
よって、上記2つのAPIを有効化する必要があります。
API ライブラリ
https://console.cloud.google.com/apis/library
APIライブラリに遷移します。
まずは、対象プロジェクトが選択されていることを確認します。
ここでは、APIを検索します。
「Google Drive API」と入力すると、以下のように結果が表示されます。
「Google Drive API」をクリック。
「有効にする」ボタンをクリックします。
「Google Sheets API」も同じようにして、有効化します。
サービスアカウントの作成
「三」→「APIとサービス」→「認証情報」をクリック。
「認証情報」画面に遷移します。
「認証情報を作成」→「サービスアカウント」をクリック。
サービスアカウント画面に遷移。
サービスカウント名を入力します。
そうすると、自動的にメールアドレス部分も入力されます。
あとは省略で問題ないため、「完了」ボタンをクリック。
そのまま1分ほど待つと、サービスアカウントが表示されます。
作成されたばかりのメールアドレスをクリック。
以下のような画面に遷移します。
「キー」をクリック。
「鍵」画面に遷移。
「鍵を追加」→「新しい鍵を作成」をクリック。
そうすると、以下のようなポップアップが表示されます。
「JSON」にチェックがある状態で「作成」をクリック。
jsonファイルのダウンロードが始まります。
それを適当な場所に保存します。
ダウンロードできたら、「閉じる」をクリック。
以上、サービスアカウントの作成が完了です。
次は、このサービスアカウントにスプッレドシートへ共有する権限を付与しましょう。
サービスアカウントへのアクセス権の付与
まず、先ほどダウンロードしたjsonファイルの名称を変更します。
変更後のファイル名は、「service_account.json」です。
service_account.json
service_account.jsonの中で、「client_email」の値が必要になります。
このメールアドレスに対して、スプッレドシートへのアクセス権限を与えます。
では、実際に共有してみます。
Googleスプッレドシート上で「gspreadのテスト用」という文書を作成します。
文書には、「A1」に適当な値を入力しておきます。
その文書を共有します。
対象アカウントは、client_emailのメールアドレスです。
「送信」ボタンをクリック。
以上、サービスアカウントへのアクセス権の付与が完了です。
本当に共有できているのかどうかは、試すしかありません。
では、実際にgspreadの動作確認を兼ねて確認しましょう。
gspreadの動作確認
動作確認として、共有されたスプッレドシートにアクセスします。
そして、「A1」の値を取得します。
その処理のプログラムは、以下のようにコーディングできます。
import gspread gc = gspread.service_account(filename="./service_account.json") sh = gc.open("gspreadのテスト用") print(sh.sheet1.get('A1'))
上記プログラムを実行すると、以下のような表示となります。
[['連携テスト']]
上手く値を取得できています。
プログラムに関しては、特に説明は不要ですね。
文書KEYなどでなくても、日本語の文書名指定でも読み込み可能となります。
sh = gc.open("gspreadのテスト用")
もしエラーが出た場合は、権限付与などが失敗している可能性があります。
以下のエラーが出ているはずです。
gspread.exceptions.SpreadsheetNotFound
このようなエラーが出ている場合は、アクセス権限の箇所を見直しましょう。
以上、gspreadの動作確認でした。