PythonからGoogle Sheetsを更新する方法

  • 15
    Like
  • 0
    Comment
More than 1 year has passed since last update.

OAuthを使ってGoogle Sheetsを編集する方法のメモ。

事前準備

Credentialsの作成

  • https://console.developers.google.com/project/ でプロジェクト作成
  • [APIs & auth] > [Credentials] を選択してOAuthの [Create new ClientID] をクリック
  • [Service account] を選択して [Create ClientID] をクリック
  • JSONファイルが自動的にダウンロードされるけど [Generate new P12 key] をクリックしてキーの作成

ここで必要なのは
- コンソール上に表示されているEmail address (xxxxxx@developer.gserviceaccount.comなど)
- 上でダウンロードしたP12 keyファイル

Pythonのモジュールのインストール

以下をpipインストール

  • gspread
  • oauth2client

※ oauth2cientをインストールする際にはpyopensslが必要

コード

import gspread
from oauth2client.client import SignedJwtAssertionCredentials

# 認証
f = file('/path/to/p12keyfile', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
                  'xxxxxx@developer.gserviceaccount.com', # Email address
                  key,
                  scope='https://spreadsheets.google.com/feeds https://docs.google.com/feeds',
                  token_uri='https://accounts.google.com/o/oauth2/token'
               )
gs = gspread.authorize(credentials)


doc = gs.open('Worksheet名')

# Sheet追加
sheet = doc.add_worksheet('Sheet名', row=100, col=20)

# Sheetの選択
sheet = doc.worksheet("Sheet名")

# 値の取得

val = sheet.acell('B1').value # ラベル指定の場合のメソッド名はacell
val = sheet.cell(1,2).value   # 座標指定の場合は (行,列)

# 値の設定・変更

sheet.update_acell('B1', 'hoge') # ラベル指定の場合のメソッド名はupdate_acell
sheet.update_cell(1, 2, 'hoge')  # 座標指定の場合は (行,列)

# 変更量が多い時
cell_list = sheet.range('A1:C4')
'''
cell_list[0] : A1
cell_list[1] : B1
cell_list[2] : C1
cell_list[3] : A2
cell_list[4] : B2
 :
'''
for cell in cell_list:
    cell.value = 'fuga'
sheet.update_cells(cell_list)

OAuthを使わない方法

パスワード書くのを躊躇わない方は。


import gspread
doc = spread.login('xxxx@gmail.com', 'password')

sheet = doc.add_worksheet('Sheet名', row=100, col=10)