Pythonでスプレッドシート操作-③Pythonサンプルコード

スポンサーリンク

Pythonでスプレッドシートを操作するサンプルコード

前回までにGoogle Cloud Platform(GCP)のAPIを有効化し、認証情報を登録する手順についてご説明しました。

Pythonでスプレッドシート操作-①APIの有効化
Pythonでスプレッドシート操作-②認証情報の登録

今回は前回までで設定した認証情報を用いてスプレッドシートを編集するPythonのサンプルコードをご紹介します。

2通りの認証方法でのPythonコード

認証情報の登録するには「OAuth2.0クライアントID」と「サービスアカウント」の2通りがあります。

どちらの方法を使っているかによってPythonのコードも変わります。
それぞれのコードについてご紹介します。

スポンサーリンク

OAuth2.0クライアントIDを使用してのGoogleスプレッドシート操作のPythonサンプルコード

事前に用意しておくもの

事前に用意しておくのは「クライアントID」と「クライアントシークレット」の文字列です。
今回はPythonコード内に直接記入します。

別ファイルを読み込むようにしても大丈夫だと思いますが、手軽さを求めてのこのフローなのでコード内に記入する手順としています。
また、ライブラリ「pydata_google_auth」と「gspread」を事前にインストールしておく必要があります。

OAuth2.0クライアントIDを使用してスプレッドシートを操作するPythonサンプルコード

pythonのサンプルコードは以下の通りです。

初回の起動時は後で紹介するように認証のステップを手動で操作して認証を通す必要があります。

import pydata_google_auth, os
import gspread

CLIENT_ID = 'クライアントIDを入力'
CLIENT_SECRET = 'クライアントシークレットを入力'

scoped_credentials = pydata_google_auth.get_user_credentials(
  [
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/spreadsheets'
  ],
  client_id=CLIENT_ID,
  client_secret=CLIENT_SECRET
)

gc = gspread.authorize(scoped_credentials)

#共有設定したスプレッドシートキーを変数[SPREADSHEET_KEY]に格納する。
SPREADSHEET_KEY = '操作したいスプレッドシートIDを入力'

#共有設定したスプレッドシートの「テスト」シートを開く
workbook = gc.open_by_key(SPREADSHEET_KEY)
Sheet = workbook.worksheet('テスト')
Sheet.update_cell(1, 1, "〇")

OAuth2.0クライアントIDを使用した際の初回認証

初回実行時、ブラウザで認証情報の確認と承認のステップが入り、許可をするとコードが実行されます。
まずブラウザが起動するので、アカウントを選択します。

vba168-1スプレッドシート操作認証

続いて「このアプリはgoogleで確認されていません」という警告メッセージが表示されます。

こちらは「続行」をクリックします。
「安全なページに戻る」をクリックしたらPythonのコードが動きません。

vba168-2スプレッドシート操作認証

続いて認証情報の登録の際に設定したスコープが表示されますので、両方にチェックをつけて続行をクリックします。

vba168-3スプレッドシート操作認証

認証情報が取得されたのでウインドウを閉じてください。と表記がでたら完了です。

vba168-4スプレッドシート操作認証

サービスアカウントを使用してのGoogleスプレッドシート操作のPythonサンプルコード

事前に用意しておくもの

サービスアカウントの認証には鍵ファイルが必要になります。
鍵ファイルはPythonサンプルコードから取得しやすい場所に格納しておきます。

その他事前に「oauth2client」「gspread」をインストールしておく必要があります。

サービスアカウントを使用したPythonサンプルコード

こちらのコードはたぬさんの記事https://tanuhack.com/operate-spreadsheet/を参考にさせていただきました。
すごくわかりやすくまとめてくださっていて勉強させていただきました。

import gspread

#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成します。
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(“認証ファイルのパスを入力”, scope)

#OAuth2の資格情報を使用してGoogle APIにログイン
gc = gspread.authorize(credentials)

#共有設定したスプレッドシートキーを変数[SPREADSHEET_KEY]に格納
SPREADSHEET_KEY = 'スプレッドシートIDを入力'

#共有設定したスプレッドシートのシート1を開く
workbook = gc.open_by_key(SPREADSHEET_KEY)
Sheet = workbook.worksheet('テスト')
Sheet.update_cell(1, 1, "〇")

コメント