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を使用した際の初回認証
初回実行時、ブラウザで認証情報の確認と承認のステップが入り、許可をするとコードが実行されます。
まずブラウザが起動するので、アカウントを選択します。
続いて「このアプリはgoogleで確認されていません」という警告メッセージが表示されます。
こちらは「続行」をクリックします。
「安全なページに戻る」をクリックしたらPythonのコードが動きません。
続いて認証情報の登録の際に設定したスコープが表示されますので、両方にチェックをつけて続行をクリックします。
認証情報が取得されたのでウインドウを閉じてください。と表記がでたら完了です。
サービスアカウントを使用しての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, "〇")
コメント