【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とは、統計処理や機械学習、ディープラーニングといった数値計算分野を中心に幅広い用途で利用されている人気なプログラミング言語です。 主な特徴として「効率のよい、短くて読みやすいコードを書きやすい」、「ライブラリが豊富なのでサクッと...
Python
スポンサーリンク

コメント