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