プログラミング

【Python】Google Colaboratoryでスプレッドシートの値取得と更新

【Python】Google Colaboratoryでスプレッドシートの値取得と更新

Google Colaboratory便利です。

今回は、Google Colaboratoryからスプレシートの値取得と更新をする方法を共有します。

準備

事前に操作するスプレッドシートを新規作成しておきます。

今回は読み込みの確認用にB2に以下のように入力しておきました。

実装コード

#gspreadをインストール(スプレッドシート)
!pip install gspread

#ライブラリをインポート
from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspread


#---------------------------------------------------------------------------------------
# 処理開始
#---------------------------------------------------------------------------------------
# 認証
print("\n------------------------------------------------------------------------------------------------------------------")
print("◎認証を求められた場合は、表示されたリンクをクリックしてください。")
print("権限許可した際に表示されたキーをコピーして↓の枠内に入力し、Enterキーを押してください。")
print("------------------------------------------------------------------------------------------------------------------")
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())


# スプレッドシートをURL指定で開く
workbook = gc.open_by_url("スプレッドシートのURL")

# シートをシート名指定で開く
worksheet = workbook.worksheet("シート1")

# ラベルを指定してセルの値を取得する
cell_value1 = worksheet.acell("B2").value
print("ラベルを指定してセルの値を取得する:", cell_value1)

# 行番号と列番号を指定してセルの値を取得する(左:行番号、右:列番号)
cell_value2 = worksheet.cell(2, 2).value
print("行番号と列番号を指定してセルの値を取得する:", cell_value1)

# ラベルを指定して複数セルの値を一次元配列に格納する
cell_list = worksheet.range("B1:B10")
print("ラベルを指定して複数セルの値を一次元配列に格納する:", cell_list.value)


# ラベルを指定してセルの値を更新する
worksheet.update_acell("B3", "ブログに人がいっぱい来るといいのに!")

# 2.行番号と列番号を指定してセルの値を更新する
worksheet.update_cell(4, 2, "でも現実は厳しい")

# 3.セルの値をまとめて更新する(バッチ処理)
count = 1
cell_list = worksheet.range('B5:B10')
for cell in cell_list:
  cell.value = "だから今日も筋トレします! " + str(count)
  count += 1
worksheet.update_cells(cell_list)

コードの説明

Google Colaboratoryの環境に !pip でライブラリをインストールしています。

gspreadはPythonでスプレッドシートを扱うためのライブラリです。

#gspreadをインストール(スプレッドシート)
!pip install gspread

続いて、ライブラリをインポートしています。

authGoogleCredentials はGoogleに認証(ログイン)するためのライブラリです。

#ライブラリをインポート
from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspread

Google Colaboratory からスプレッドシートを操作するために認証を実行します。

コンソール上に認証URLとキー入力欄が表示されるので、認証URLをクリックして取得したキーを入力します。

auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())

スプレッドシートをURL指定で開き、続いてシートをシート名で指定して開いています。

# スプレッドシートをURL指定で開く
workbook = gc.open_by_url("スプレッドシートのURL")

# シートをシート名指定で開く
worksheet = workbook.worksheet("シート1")

3種類の方法でセルの値を取得しています。

# ラベルを指定してセルの値を取得する
cell_value1 = worksheet.acell("B2").value
print("ラベルを指定してセルの値を取得する:", cell_value1)

# 行番号と列番号を指定してセルの値を取得する(左:行番号、右:列番号)
cell_value2 = worksheet.cell(2, 2).value
print("行番号と列番号を指定してセルの値を取得する:", cell_value1)

# ラベルを指定して複数セルの値を一次元配列に格納する
cell_list = worksheet.range("B1:B10")
print("ラベルを指定して複数セルの値を一次元配列に格納する:", cell_list.value)
メソッド説明
acellラベルを指定してセルの値を取得する
cell行番号と列番号を指定してセルの値を取得する(左:行番号、右:列番号)
rangeラベルを指定して複数セルの値を一次元配列に格納する

最後に3種類の方法でセルの値を更新しています。

# ラベルを指定してセルの値を更新する
worksheet.update_acell("B3", "ブログに人がいっぱい来るといいのに!")

# 2.行番号と列番号を指定してセルの値を更新する
worksheet.update_cell(4, 2, "でも現実は厳しい")

# 3.セルの値をまとめて更新する(バッチ処理)
count = 1
cell_list = worksheet.range('B5:B10')
for cell in cell_list:
  cell.value = "だから今日も筋トレします! " + str(count)
  count += 1
worksheet.update_cells(cell_list)
メソッド説明
update_acellラベルを指定してセルの値を更新する
update_cell行番号と列番号を指定してセルの値を更新する(左:行番号、右:列番号)
update_cellsセルの値をまとめて更新する(バッチ処理)

実行後はスプレッドシートが以下のような状態になります。

まとめ

以上で、Google Colaboratoryからスプレッドシートの値取得と更新ができるようになりました。

ありがとうございました!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA