準備
事前に操作するスプレッドシートを新規作成しておきます。
今回は読み込みの確認用に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
続いて、ライブラリをインポートしています。
auth と GoogleCredentials は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からスプレッドシートの値取得と更新ができるようになりました。
ありがとうございました!