見出し画像

Python で Google Spread Sheet をいじる

Google Spread Sheet をプログラムで参照、編集する方法を備忘録としてまとめます。
Python 3 でやります。

事前準備
Google Cloud Platform のアカウントを作成し、適当にプロジェクトを作っておきます

Google Cloud Platform での作業

まず、Google Cloud Platform のデベロッパーコンソールから、もろもろの下準備を行います。
必要な Google API を有効にする
必要になる、以下 2つの API をコンソールから有効にしておきます。
Developer Console| Google Sheets API 
Developer Console| Google Drive API

サービス アカウント (Service Account) を追加する
続いて、デベロッパーコンソールから、サービス アカウントを作成します。
サービス アカウントは、アプリケーションなどで使われるアカウントのことで、サービス アカウントを使用して API 呼び出しを行います。

1. [Developer Console| サービス アカウント](https://console.developers.google.com/iam-admin/serviceaccounts) にアクセス
2. サービス アカウントを作成をクリック
3. サービス アカウント名 を入力して、作成をクリック。サービス アカウント ID は自動的に決まります。説明は任意です。
4. サービス アカウントの権限(オプション)は特に設定なしで OK です。
5. ユーザーにこのサービス アカウントへのアクセス権を付与(オプション)も特に設定なしで OK です。
6. キーの作成で、秘密鍵を含む json ファイルを作成します。
7. ダウンロードしたら、あとでプログラムから参照できる場所に置いておきます。
次に、Google Spread Sheet にアクセスして操作を行います。

Google Spread Sheet での作業

プログラムから操作したいスプレッドシートを開き、その共有先に、
先ほどダウンロードした json ファイルに書いてある、サービスアカウントのメールアドレス (id は client_email) を
編集権限付きで、追加します。

アドレスは SERVICE_ACCOUNT@PROJECT.iam.gserviceaccount.com の形式になっているものです。
以上で下準備は完了です! プログラムの実装に移ります。

Python での操作

パッケージのインストール
必要となるパッケージをインストールします。
gspread をメインで使います。

$ pip install gspread oauth2client

Google Spread Sheet をいじってみる!
早速いじってみましょう!以下のプログラムを走らせると、実際にスプレッドシートの内容が更新されるため、要注意です。
プログラムの解説は、コメントとして記述しています。


import gspread
from oauth2client.service_account import ServiceAccountCredentials
import os

# 利用する API を指定する
api_scope = ['https://www.googleapis.com/auth/spreadsheets',
            'https://www.googleapis.com/auth/drive']

# 先ほどダウンロードした json パスを指定する
credentials_path =
   os.path.join(os.path.expanduser('~'),
                'path', 'to', 'XXXXXXXXXXX.json')

# json から Credentials 情報を取得
credentials =
   ServiceAccountCredentials.from_json_keyfile_name(credentials_path, api_scope)

# 認可されたクライアントを得る
gspread_client = gspread.authorize(credentials)

# スプレッドシートの名前を指定する(日本語も使えます)
spread_sheet_name = "スプレッドシートの名前"

# 一つ目のシートを開く
sheet = gspread_client.open(spread_sheet_name).sheet1

# D 列の 22行目の情報を表示
print(sheet.acell('D12').value)

# A 列の 1行目の内容を更新する
sheet.update_acell('A1', 'Hello, Sheets API')

プログラムから操作できると、いろいろな用途がありそうですね :)
他にどんな操作ができるかは、以下のドキュメントをご覧ください。



この記事が気に入ったらサポートをしてみませんか?