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'))
● 実行結果は以下のとおり
コメント