CODE Python

Pythonとスプレッドシートの連携

更新日:

Pythonとスプレッドシートの連携方法の手順です。
誰でも簡単に閲覧・編集できるスプレッドシートは便利ですね。

こちらのRPG作成で、クラスを作成してキャラのパラメータを管理すると記載しましたが、そのパラメータはスプレッドシートに入れます。
Pythonだと普通は標準のSQLite3とかかもしれませんが、スプレッドシートの方が楽な為。。

ここではスプレッドシートとの連携方法を記録しておきます。
Web上に連携方法の説明はありますが、画像が少し変わっているようだったので自分用に改めてです。

目次

  1. Google Cloud Platform
  2. 実行
  3. まとめ

Google Cloud Platform

GoogleのクラウドサービスであるGoogle Cloud Platform(GCP)で設定します。
Pythonとスプレッドシートの連携でしたら無料です(のはずです)。
リンクはこちら

プロジェクトの作成

 

 

 

新しいプロジェクト

 

 

プロジェクト名を記入して作成

 

 

作成したプロジェクトを選択する

 

 

Google Drive APIを有効にする

 

 

driveで検索して、Google Drive APIを選択

 

 

有効にする

 

 

 

 

Google Sheets APIを有効にする
ライブラリでsheetで検索して、Google Sheets APIを選択

 

 

有効にする

 

 

 

 

ダッシュボードに移動

 

 

2つのAPIが有効になっていることを確認

 

 

認証情報の設定

 

 

 

 

 

 

 

 

編集権限をつける

 

 

 

 

 

 

サービスアカウントが作成される

 

 

秘密鍵を作成する
(先程、作成したサービスアカウントをクリックした画面)

 

 

 

 

 

 

JSONのファイルを取得

 

 

JSONを開いてclient_emailをコピー

 

 

スプレッドシートを作成して、共有

 

 

先程のclient_emailに編集者権限を付与

 

 

設定完了

  

 

 

実行

必要なライブラリをインストールしてプログラム実行です。

ライブラリのインストール
pip install gspread
pip install oauth2client

プログラムはこちらを利用させて頂きました。
あまり理解できておらず、以下の箇所はオマジナイと思っています・・(∀`*ゞ)
#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成します。


#OAuth2の資格情報を使用してGoogle APIにログインします。

プログラム

import gspread
import json
import os.path
# 実行中のファイルのパスを取得
os.chdir(os.path.dirname(os.path.abspath(__file__)))

# ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成します。
from oauth2client.service_account import ServiceAccountCredentials 

# 2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行し続けなければならない
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

# 認証情報設定
#ダウンロードしたjsonファイル名をクレデンシャル変数に設定(秘密鍵、Pythonファイルから読み込みしやすい位置に置く)
credentials = ServiceAccountCredentials.from_json_keyfile_name('ダウンロードしたJSONファイル名.json', scope)

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

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

# 共有設定したスプレッドシートのシート1を開く
worksheet = gc.open_by_key(SPREADSHEET_KEY).sheet1

# A1セルの値を受け取る
import_value = int(worksheet.acell('A1').value)

# A1セルの値に100加算した値をB1セルに表示させる
export_value = import_value+100
worksheet.update_cell(1,2, export_value)

josnファイルはダウンロードしたファイルを利用します。ファイル名は何でも良いと思いますが、ダウンロードした時のファイル名をそのまま使いました。

また、エディタはVSCodeを使っていますが、設定がよく分からず、相対パスで指定すると、そんなファイルはないとエラーになってしまいます。

なので、ファイルを指定するときはいつも実行中のファイルのパスを取得する「os.chdir」を使っています。
これがあると、相対パスでも上記のエラーは発生しなくなります。

import os.path
os.chdir(os.path.dirname(os.path.abspath(__file__)))

 

あと、'スプレッドシートキー'はスプレッドシートのURLの○○○の部分ですね。
(40文字くらいあります)
https://docs.google.com/spreadsheets/d/○○○/edit#gid=0

プログラムを実行するとスプレッドシートのA1セルに数字に100を足した数をB1セルに記載されます。

gspreadのライブラリはこちらにまとめましたのでご参考までにどうぞ!

 

 

まとめ

データ量が多くて速さを求めるシステムだとスプレッドシートは厳しいかもしれないです。
そうでないシステムはスプレッドシートで十分かと。

-CODE, Python
-, , , ,

Copyright© kerublog , 2021 All Rights Reserved Powered by STINGER.