Python

【Python×Googleスプレッドシート】スプレッドシートの操作をする方法《事前準備》

今回はPythonを使ってGoogleスプレッドシートを操作するには、事前に鍵を取得しなければならない。今回はその鍵の取得からスプレッドシートを操作するところまでを解説する。

【Python×スプレッドシート】gspreadの基本コード一覧 gspreadを利用してスプレッドシートを操作する方法リスト。 gspreadを使用できるための事前準備編は下記のページから↓↓...

事前準備

1.Google Cloud Platform での作業

「Google Cloud Platform」にアクセスする。

最初に以下のURLにアクセスする。
https://console.developers.google.com/

「My First Project」をクリック

「新しいプロジェクト」をクリック

プロジェクト名を設定して作成

「APIとサービスの有効化」をクリック

APIを有効にする

上記のような画面になったら、

  • Google Drive API
  • Google Sheets API

の2つのAPIを検索して有効化する。

認証情報を作成する

①認証情報を作成 をクリック
②サービスアカウント を選択
③必要事項を設定する

自動作成されたメールアドレスは後で必要になるためコピーして控えておく

④自分の使用目的に合ったロールを選択する

個人で使う分には「編集者」にしておけばOK

⑤完了

秘密鍵の発行

①先ほど作成したサービスアカウントのメールをクリック
②新しい鍵を作成する
③作成した鍵をダウンロードする

作成した秘密鍵をPythonプログラムと同じディレクトリに配置

sample_folder
│  main.py
│  python-key.json

秘密鍵のファイル名は変更してもOK

2.操作したいスプレッドシートの設定

スプレッドシートを作成する

最初にPythonで読み込みをしたいスプレッドシートを作成する。
今回は下記画像のようなファイルを用意した。

スプレッドシートのファイル自体をワークブック
ワークブックの中にあるそれぞれのページをシート
シートの中にある1つ1つのマスをセル
という。

シートを共有化する

①共有ボタンをクリック
②サービスアカウントのメールアドレスを入力して共有

プログラムへの組み込み

1.モジュールをインストール

gspread:スプレッドシートを操作するためのモジュール
oauth2client:スプレッドシートにアクセスするための認証に使用する

pip install gspread
pip install oauth2client

2.認証設定

import gspread
from oauth2client.service_account import ServiceAccountCredentials 

scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

# ****の部分に秘密鍵(JSONファイル)のファイル名を入力
Keyfile = '****.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(Keyfile, scope)
gc = gspread.authorize(credentials)

3.操作するスプレッドシートを指定

Pythonでスプレッドシートを操作するために

  • どのワークブックの
  • どのシートの
  • どのセル

を操作するかを設定する。

ワークブックの指定

ワークブックを指定するには以下の方法がある。

  • 「名前」で取得する (‘ワークブック名’)
  • 「id」で取得する (‘id’)
  • 「URL」で取得する (‘URL’)
# **** は環境によって変更する。

# 名前で取得
wb = gc.open('****')
print(wb)

# idで取得
SP_id = '*************'
wb = gc.open_by_key(SP_id)
print(wb)

# URLで取得
SP_URL = 'https://docs.********'
wb = gc.open_by_url(SP_URL)
print(wb)

どの方法で取得しても全て同じ結果が出力される。

ワークシートの指定

ワークシートを指定するには以下の方法がある。

  • 「名前」で取得する (‘シート名’)
  • 「index」で取得する (0) or (1) or …
  • 「sheet1」で取得する sheet1
# 最初にidでワークブックを取得しておく
SP_id = '****'
wb = gc.open_by_key(SP_id)

# 名前で取得
ws = wb.worksheet('シート1')
print(ws)

# indexで取得
ws = wb.get_worksheet(0) # 一番左のシートが0になる。
print(ws)

# sheet1を取得
ws = wb.sheet1 #sheet2やsheet3を設定するとエラーになる。
print(ws)

どの方法で取得しても全て同じ結果が出力される。

indexは一番左のシートが「0」になり、
右に向かって「1」、「2」…と連番になる。

「ws = wb.sheet1」は
sheet1以外(sheet2やsheet3など)は取得できない。

あとは値を取得or入力するセルを指定すればスプレッドシート内のデータを編集できる。
詳しいやり方はこちらの記事で↓↓

【Python×スプレッドシート】gspreadの基本コード一覧 gspreadを利用してスプレッドシートを操作する方法リスト。 gspreadを使用できるための事前準備編は下記のページから↓↓...