gspreadをインストールしてGoogleスプレッドシートをPythonで操作する

gspreadをインストールしてGoogleスプレッドシートをPythonで操作する プログラミング

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.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年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の動作確認でした。

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