aratana Advent Calendar 2019の20日目です。
最近、設定ファイルにサイト情報を書いて、チェックしにいくというスクリプトを動作させているのですが、チェック対象サイトが増えるたびに、設定ファイルを自分で書き換えるという作業が発生しているので、改善したいなと思ってきました。
現状だいたい下記のような流れです。
マネージャーががんばる -> サイトオープン -> サイトオープンしたよ連絡
-> シートにサイト情報を記入
-> 私に連絡が来る -> 私がサーバに入って、設定ファイルに反映
私の作業は数分ですが、めんどうだなーって思ってきました。
スプレッドシートに書いてあるサイト情報をマスタにして、スクリプトから取得すれば解決だな!と思ったので、スプレッドシートから設定値を楽に取得するパッケージを作りました。Pythonで。
gssetting
安直ですが、Google SpreadSheet Settingの略で、gssettingと命名してみました。
設定情報のモデルを作成し、それを元にシートから情報を取ってくるイメージです。
gspread依存です。
2019/12/20現在、急ぎで作ったのでアルファ扱いで、完成度は低いですが、今後改善していきます。(テストファイルとかつくらなきゃ
利用方法
はじめに
まず、サービスアカウントを作成して、対象のシートに設定してください。
下記サイトをご参考に。。。
PythonでGoogleスプレッドシートを編集
インストール
PyPiに登録しているので、ピップ!します。(現在は、Python3.7以上対象となってます。
pip install gssetting
モデル作成
下記シートから、name列とvalue列のみを抽出しようかと思います。
from dataclasses import dataclass
from gssetting import GSSetting
@dataclass
class Setting(GSSetting):
username: str
value: str
headers = ["name", "value"]
実行
下記コードを実行することにより、読み込み完了です。
後はいい感じに加工したりしていけばおkですね!
from dataclasses import dataclass
from gssetting import GoogleSpreadSheetSetting, GSSetting
@dataclass
class Setting(GSSetting):
username: str
value: str
headers = ["name", "value"]
if __name__ == "__main__":
gs_setting = GoogleSpreadSheetSetting(
"./service_account.json", "document_id"
)
settings = gs_setting.load("sheet_name", "A1:C3", Setting)
print(settings)
for setting in settings:
print(setting.username.value)
実行結果
[Setting(name=<Cell R2C1 '私'>, value=<Cell R2C3 'ひらがな'>), Setting(name=<Cell R3C1 '僕'>, value=<Cell R3C3 '漢字'>)]
私
僕
まとめ
楽に、シートから設定を取得できるパッケージは完成したので、色々なところで使いまわししていこうかなと思ってます。