google spread sheetをpythonで操作

Python

表計算をgoogle spread sheetで管理している人も多いと思います
クラウド上で管理や共有ができるのでリモートからでも操作出来て便利です
エクセルファイルを編集するときは、pandasやopenpyxlを使用しますが、google spread sheetを編集するときはgspeadというライブラリを使用します
最初のgoogle cloudとの連携が面倒ですが、ぜひ活用してみてください

・環境

windows 11
gspread 6.1.4

・google cloudの設定

google accountにログイン

google cloudの上部メニューのコンソールをクリック

上部メニューの新しいプロジェクトを作成をクリック

プロジェクト名を入力し、場所は組織なしでOK

左上のナビゲーションメニューよりAPIとサービスの有効なAPIとサービスを選択

APIとサービスを有効にするを選択

APIとサービスを検索からgoole sheet APIとgoogle drive APIを選択して有効にする

ナビゲーションメニューよりAPIとサービスより認証情報を選択

認証情報を作成よりサービスアカウントを選択

サービスアカウント名を記入し続行

サービスアカウントのロールを基本の編集者を選択し続行

ユーザーにこのサービス アカウントへのアクセスを許可は空欄のまま完了

作成したサービスアカウントを選択する

鍵のタブをクリックし下のほうのキーの追加をから新しい鍵を作成

JSON形式でダウンロードする

・google driveの設定

google driveにログイン

アクセス用の新しいフォルダを作成

フォルダID(URLのfolders/の後の英数字の部分)を確認、コピーしておく

先ほど作成したJSON形式の鍵のファイル内にあるclient_emailの値をコピーする

google driveのフォルダ名の右の矢印をクリックして共有から共有を選択

先ほどJSONファイルからコピーしたアドレスを貼り付け、共有を選択

・pythonファイル作成

必要なライブラリをインストールします

pip install gspread

まずは以下のコードでgoogle driveの指定したフォルダに新しいファイルを作成します
先ほど、google cloudでダウンロードした鍵のファイルのパスを入力します
今回は作業ディレクトリに置いています

import gspread

gc=gspread.service_account(
    filename="gspred-test.json" #鍵のパスを入力
)

#ファイルを作成
book=gc.create(
    "test_1", #ファイル名
    folder_id="16CYDBSLCiR081Q-GQD7wKmv3T6WT_XKv" #google driveのフォルダIDを入力
)

これで指定したフォルダに新しいスプレッドシートのファイルが作成できました

すでに存在するファイルを読み込む場合はこちら

#ファイルを読み込み
book=gc.open(
    "test_1",
    folder_id="16CYDBSLCiR081Q-GQD7wKmv3T6WT_XKv"
)

次に編集するワークシートを指定します

#シートの番号で指定
w_sheet=book.get_worksheet(0)

#シートの名前で指定
w_sheet=book.worksheet("Sheet1")

新しいシートを作成するときはこちら

# 新しいワークシートを作成 タイトルと行列の数を指定
new_sheet = book.add_worksheet(title="NewSheet", rows=100, cols=20)

シート名を変更する場合はこちら

# シート名を変更
new_title = "New Sheet Name"
w_sheet.update_title(new_title)

セルに入力には以下のコードを追加します

#ワークシートの1枚目を取得、オブジェクトに代入
w_sheet=book.get_worksheet(0)

#ワークシートのセルを指定して文字を入力
w_sheet.update_acell("A1","Hello world")

セルの値を取得する方法はこちら

#セルの値を取得
val=w_sheet.acell("A1").value
print(val)

#Hello world

次回の記事では、エクセルから表データをpandasで読み取り、スプレッドシートに書き込んで編集していきます

コメント