LoginSignup
1
3

More than 1 year has passed since last update.

40代おっさんpythonでGoogleスプレッドシートを操作してみる

Posted at

本記事ついて

本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

GCPに登録してAPIの有効化して使えるようにする

・Googleアカウントが必要になる

Google Cloud Platformを開いて登録を行う

My First Projectを選んで新しいプロジェクトを選ぶ

プロジェクトを記入
場所は組織なし
*会社に属している場合は必要かも

右上に通知が出てきます
作成出来たらプロジェクトを選択
プロジェクトに飛ぶと思います。
上のタスクバーが自分のプロジェクト名に変わっていると思います

APIを有効化

左に「APIとサービス」という欄があると思いますのでそこをクリック
「APIとサービスの有効化」という項目が出てきたと思うのでそれをクリック
*最初はすべて無効になっていると思います

必要な下2つのAPIを有効化
Google Drive API
Google Sheets API

APIとサービスの画面に戻って
下のほうにあるフィルタを見ると2つの項目が追加されています

サービスアカウントを作る

APIとサービスに行き
認証情報を選ぶ
下にサービスアカウントとありますが今は何もありません
上にある認証情報を作成をクリック
その中のサービスアカウントをクリック
サービスアカウント名をいれて
作成して続行をクリック
ロールを選択で
基本を選んで編集者を選んでください
続行をクリック
最後に完了をクリック
サービスアカウントに今作ったものが追加されていると思います

秘密鍵を作成

先ほど作ったサービスアカウントの所をクリック
色々出てくると思いますが
キーを選んで
その中にある鍵を追加をクリック
新しい鍵を選んで
キータイプは
JSONを選んで
作成
秘密鍵がパソコンに保存されましたと出ていると思います
自分のパソコンにもダウンロードされていると思います

スプレッドシートで認証情報を共有する

今回、操作したいスプレッドシートを開いてください
そちらに
GCPのサービスアカウントのメールアドレスをコピーしたものを
右上にある共有を押して編集者として追加してください

スプレッドシートを操作

API使用に必要な認証

先ほどダウンロードした秘密鍵を作業ディレクトリに移動してください

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

!pip install gspread
!pip install google-auth

インポート

import gspread
from google.oauth2.service_account import Credentials

scopes = [
    'https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive'
]

credentials = Credentials.from_service_account_file(
    'path/to/the/downloaded/file.json',
    scopes=scopes
)

gc = gspread.authorize(credentials)

from google.oauth2.service_account import Credentials
これで認証系をインポート

scopes
対象範囲
今回は必要になるAPIを指定

Credentials.from_service_account_file
ファイルから秘密鍵の情報をとります
秘密鍵の位置をパスで指定

scopes=scopes
スコープ範囲を引数で指定

これで認証周りはおkです

スプレッドシートからデータを取得

スプレッドシートキー

スプレッドシートキーを変数に格納
シート名も変数に格納

SP_SHEET_KET = 'スプレッドシートキー'
SP_SHEET = 'シート名'

スプレッドシートキーは
スプレッドシートのURL
docs.google.com/spreadsheets/d/{スプレッドシートキー}/edit#gid=0
こちらに書かれている

スプレッドシートを読み込む

sh = gc.open_by_key(SP_SHEET_KET)

gc.open_by_keyでSP_SHEET_KET引数でしていして読み込む
変数shにはスプレッドシート全体の情報が入ったことになります

シート情報を読み込む

worksheet = sh.worksheet(SP_SHEET)

worksheetにシート情報を引数にすると読み込めます

シートの中身を見る

data = worksheet.get_all_values()
data

get_all_values()
シートのすべての値を取ってきています

新規シートの追加

new_worksheet = sh.add_worksheet(title='new', rows=100, cols=100)
new_worksheet

add_worksheetでシートの追加
titleでシートの名前
rows=100, cols=100で100行×100行のシートを用意

これで新しいシートが出来たと思います

書き込み

new_worksheet.update_cell(1,1, 'test value')

new_worksheetのA1にtest valueを書き込みました

参考資料

https://www.udemy.com/course/python-web-api/learn/lecture/25073250#overview

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3