見出し画像

PythonでGoogleスプレッドシートの内容を読み込んでみた。


修正履歴

・2024/05/19:初版

やること

PCのローカルに保存しているExcelファイル(拡張子はxlsx)の内容をよみこんでみました。

事前準備

Googleスプレッドシートに対してPythonからアクセスするためにはAPIの準備が必要になります。
以下のページに詳しく書かれています。

コードを書く前に適当なGoogleスプレッドシートを作成しておいて下さい。

コードを書く前に

必要な関数をpip installしておきましょう。

pip install gspread
pip install oauth2client

コードを書く

では早速コードを書いていきましょう!

import文

以下をインポートしておきましょう。

import os
import gspread
from oauth2client.service_account import ServiceAccountCredentials

関数の中身

では関数の中身を書いていきましょう。
特に難しいことはないでしょう。

またテストなのでファイル名をコードに直接書いていますが、業務で使う際には工夫をして下さい。

# 環境変数の設定
GSS_TEMP_KEY = 'xxxxxxxxxx'

# worksheetの情報を返す関数
def get_gss_worksheet(gss_name, gss_sheet_name):
    print('開始-get_gss_worksheet')

    #jsonファイルを使って認証情報を取得
    scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
    c = ServiceAccountCredentials.from_json_keyfile_name('gss_credential.json', scope)

    #認証情報を使ってスプレッドシートの操作権を取得
    gs = gspread.authorize(c)
    
    # スプレッドシート名をもとに、キーを設定
    if gss_name == "test-csv":
        spreadsheet_key = GSS_TEMP_KEY

    print('gss_name:[' + gss_name + ']')
    print('gss_sheet_name:[' + gss_sheet_name + ']')
    print('spreadsheet_key:[' + spreadsheet_key + ']')

    #共有したスプレッドシートのキーを使ってシートの情報を取得
    worksheet = gs.open_by_key(spreadsheet_key).worksheet(gss_sheet_name)

    print('終了-get_gss_worksheet')

    return worksheet

def main():
    print('開始-main')
    # スプレッドシートを定義
    worksheet = get_gss_worksheet(gss_name='test-csv', gss_sheet_name='sheet1')

    # スプレッドシートを読み込み
    value = worksheet.acell("G7").value
    print('G7:[' + value + ']')
    value = int(value) + 1

    # スプレッドシートを更新
    #書き込みはなんかエラーがでるけど、今回は書き込みは考えず
    #読み込みだけで良いのでコメントアウト
    #worksheet.update_acell("G7", value)
    print('終了-main')

if __name__ == "__main__":
    # mainの実行
    main()

実行結果

こんな感じで実行されました。

(testxxx) xxxx % python3 testxxx.py 
開始-main
開始-get_gss_worksheet
gss_name:[test-csv]
gss_sheet_name:[sheet1]
spreadsheet_key:[xxxxxxxxxxxxx]
終了-get_gss_worksheet
G7:[1]
終了-main
(testxxx) xxxx % 

以上

いいなと思ったら応援しよう!