【Python】Googleスプレッドシートを編集する方法

PythonでGoogleスプレッドシートを編集する方法について入門者向けにまとめました。

サービスアカウントキー(JSONファイル)の発行

Pythonでは、「gspread」「oauth2client」モジュールを使うとGoogleスプレッドシートにアクセスして編集できるようになります。そのために、最初にGoogleスプレッドシートにアクセスするためのサービスアカウントキー(JSONファイル)を発行する必要があります。本節ではその手順を紹介します。

①プロジェクトの作成

● 「https://console.developers.google.com/cloud-resource-manager」へブラウザでアクセスし、[プロジェクトを作成]をクリック。

● [プロジェクト名]に任意の名前を入力して[作成]をクリック。

※利用規約画面が表示されたら利用規約にチェックを入れて[同意して実行]をクリック→

● 作成完了まで少し時間がかかるので待ちます。

②Google Drive APIの有効化

● ライブラリからAPIを検索(上の検索欄に「drive」と入力)し、検索結果から「Google Drive API」を選択して有効にします。

③Google Sheets APIの有効化

● 「sheet」と入力すると「Google Sheets API」が表示されるので選択し有効にします。

④サービスアカウント キーの発行

● 「認証情報」→「認証情報を作成」→「サービスアカウント キー」を選択します。

● 任意のサービスアカウント名を入力して、役割は「編集者」を選択し「完了」をクリックします。

● 作成したサービス名ををクリック。。

● 「キー」をクリック。

● 「鍵を追加」→「新しい鍵を作成」をクリック。

● タイプを「JSON」にして「作成」をクリックするとJSONファイルがダウンロードされます。

Googleスプレッドシートの設定

続いて、Googleスプレッドシートを作成し、サービスアカウントキー(JSONファイル)で外部から編集可能な状態にする必要があります。本節ではその手順を紹介します。

● 以下リンクから編集対象となるスプレッドシートを作成し、任意のシート名を入力します。
https://docs.google.com/spreadsheets/create

● シート右上の共有ボタンを押します。

● 共有するユーザーのメールアドレスの入力欄が表示されます。
先程ダウンロードしたJSONファイルを開いて「client_email」行のメールアドレス(xxxxx@gspread-sample-202808.iam.gserviceaccount.com)をコピーして貼り付けて「送信」をクリック。

 "client_email": "xxxxx@gspread-sample-202808.iam.gserviceaccount.com",

● 以下のような画面が出るのでポップアップの「OK」をクリック。

● 追加したアドレスが「編集者」になっていることを確認。

Pythonの動作確認(Googleスプレッドシートのセルにアクセス)

● pipで「gspread」と「oauth2client」をインストールします。

$ pip install gspread
$ pip install oauth2client

● 以下のPythonプログラムを作成し、実行すればGoogleスプレッドシートを編集できます。
※自分で編集する箇所①②は適宜修正してください。

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']

# 自分で編集する箇所①先程ダウンロードした「サービスアカウントキーのJSONファイルのパス」を入力
credentials = ServiceAccountCredentials.from_json_keyfile_name('サービスアカウントキーのJSONファイルのパス, scope)
gc = gspread.authorize(credentials)

# 自分で編集する編集箇所②'プロジェクト名'にはGoogleスプレッドシート名(実行例なら左上の「停電アラート」)を入力
wks = gc.open('プロジェクト名').sheet1

# A1セルのデータを更新(Testと記入)
wks.update_acell('A1', 'Test')

# A1セルのデータを取得して表示
print(wks.acell('A1'))

● 実行結果は以下のとおり

【Python超入門】使い方とサンプル集
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。

コメント