スプレッドシート自動化の第一歩!Pythonで認証&API設定から自動化まで解説
このページでは、PythonでGoogleスプレッドシートを自動化するための導入部分を中心に解説します。Pythonでのシートへの簡単な書き込みや読み込みができるようになります。
Googleスプレッドシートは無料で使えて、他の人とリアルタイムで共有できるのが魅力だよね!インターネットさえ繋がっていれば、どのパソコンでも使えるし!
ビジネスで使う場面が増えてきているよね!
ただ色んなシートやデータがたくさんあると作業量も多くて大変だね〜
たしかに大変なこともあるね!
いつも同じことをしているならPython自動化がおすすめだよ。
事前準備が必要になるけど、1つずつ一緒にすすめていこう!
PythonでGoogleスプレッドシートを自動化するためには、GoogleのAPIを使用してスプレッドシートにアクセスし、データを読み書きすることが必要です。
- Google Cloud Consoleでプロジェクトを作成する
- Google Drive APIとGoogle Sheets APIを有効にする
- サービスアカウントを作成し、JSONキーファイルをダウンロードする
- Googleスプレッドシートにアクセス権を付与する
一度行えば、同じ設定を使い回すこともできます。
1つずつステップバイステップで行っていきましょう。
Google Cloud Platformで事前準備しよう!
Google Cloud Platformにログインする
Google Cloud Platformで検索します。
ログイン画面がでますので、Googleアカウントでログインしましょう。
アカウントがない方は「アカウント作成」してください。
プロジェクトを作成する
Topページより新しいプロジェクトを選択し、プロジェクト名をつけます。
今回はプロジェクト名に「SpreadSheetProject」と入力し、作成を押します。
(プロジェクト名は好きなものでかまいません)
作成したプロジェクトをクリックし開きます。
Google Sheets API を有効にする
先程のプロジェクトが選択されている状態で、左のメニューから「APIとサービス」 > 「ライブラリ」を選択します。
検索窓に「spread」と入力し、Google Sheets API を有効にします。
(「Sheets」と検索したほうが良いかもしれません)
Google Sheets API の有効化完了です!
Google Drive API を有効にする
左のメニューから「APIとサービス」 > 「ライブラリ」を選択します。
「Drive」と検索し、結果からGoogle Drive APIを選択して有効化します。
Google Drive API の有効化完了です!
サービスアカウントを作成する
- サービスアカウントとは
-
「プログラム」がGoogleのAPIやサービスにアクセスするために使用される特別なアカウントです。
これは、通常のユーザーアカウント(人間がログインするアカウント)とは異なり、人ではなくアプリケーションやシステムが主体となって操作を行うためのアカウントです。
サービスアカウントには、xxxx@xxxx.iam.gserviceaccount.com
のような専用のメールアドレスが割り当てられます。
このアドレスを使用して、Googleスプレッドシートなどのリソースにアクセス権を付与します。
左のメニューから「APIとサービス」 > 「認証情報」を選択します。
「+認証情報作成」から「サービスアカウント」を選択します。
サービスアカウント名に「SpreadSheet」と入力。作成して続行を押します。
(サービス名はお好きなもので結構です。)
「ロールを選択」> 「基本」> 「編集者」を選択し、続行を押します。
最後に「完了」を押します。サービスアカウントの作成完了です!
サービスアカウントからJSON形式でキーをダウンロードする
サービスアカウントが作成されたことを確認します。
サービスアカウントをクリックします。(赤枠)
「キー」> 「鍵を追加」> 「新しい鍵を作成」 を押します。
キーのタイプをJSONにチェックをつけ、作成を押すとファイルがダウンロードされ完了です!
JSON形式のキーを確認する
ダウンロードフォルダに拡張子が「.json」のファイルがあることを確認します。
Pythonスクリプトで使うから大切に持っておいてね!
使いやすいようにファイル名を変更することも可能です
「spreadsheetproject.json」にしました。
これでGoogle Cloud Platformでの設定は完了です!
お疲れさまでした!
事前にこんな準備が必要なんだね〜!大変だ!
1度行えば同じ設定を使い回すこともできるから頑張ってついてきてね!
次からは実際のスプレッドシートの操作に近づいていくよ!
スプレッドシートにアクセス権を付与しよう!
ここからはPythonでスプレッドシートを操作するためのアクセス権を設定します。
先程作成したサービスアカウントをスプレッドシートの共有設定に行います。
権限を設定するフォルダを作成する
Googleドライブで、右クリックで開いたメニューから新しいフォルダを選択します。
今回はフォルダ名を「SpreadSheet_Python」として作成を押します。
フォルダが作成されました!
フォルダにアクセス権限をつける
作成したフォルダに共有設定でアクセス権を設定します。
フォルダの横にある「共有」マークをクリックしてください。(赤枠参照)
もしくはフォルダを右クリックし、共有からも行えます。
共有者を入力する画面がでますので、「サービスアカウント」を追加します。xxxx@xxxx.iam.gserviceaccount.com
のような専用のメールアドレスを入力します。
- 専用メールアドレスの確認方法
-
JSONファイルの中にある
client_email
の値をコピーします。
「”client_email”: “xxxx
@xxxx
.iam.gserviceaccount.com“」
このようなものが書かれているので、client_emailを目印にアンダーラインの部分をコピーしてね!JSONファイルってなんだっけ?という方はこちら
サービスアカウントメールアドレスを入力
入力すると上記のように表示がかわるので、送信を押して追加完了です!
共有マークから共有設定を再度ひらくと、ユーザーアカウントの他に先ほどのサービスアカウントが追加されていますね!
フォルダの中にスプレッドシートを作成する
フォルダの中にスプレッドシートを追加します。
フォルダにはアクセス権を付与しているので、その中のものには権限が自動で加えられます。
フォルダの中にいることを確認し、右クリックからスプレッドシートを追加します
フォルダと同じユーザーに権限が与えられます。
作成したスプレッドシートは「SpreadSheet_test_file」にしておきましょう!
(ファイル名はお好みでよいです)
スプレッドシートに権限がついているか確認します。
サービスアカウントの権限がついていますね!
これで事前設定は完了となります!
お疲れ様でした!
あとはPythonで操作できれば自動化の道はみえてくるよ!
サンプルコードを試して、ぜひ実感してね!
Pythonでスプレッドシートを操作しよう!
ライブラリをインストールする
GoogleスプレッドシートをPythonから操作するためにgspreadをインストールします。
コマンドプロンプト(Windows)またはターミナル(Mac)を開き、pipコマンドを入力して実行します。
インストールが完了すると、gspreadが使えるようになります。
- インストールされているか不安な場合は(確認方法)
-
コマンドプロンプト(Windows)またはターミナル(Mac)にてpip showコマンドでgspreadを指定します。
コマンドを実行した結果、以下のような例になっていればインストールができています。
この例では「Version」の行にインストールされているgspreadのバージョンが表示されています。
Zshryoma@R-Mac % pip3 show gspread Name: gspread Version: 6.1.3 Summary: Google Spreadsheets Python API ...(省略)
サンプルコードをコピーする
名前で指定したGoogleスプレッドシートを操作します。
1つ目のシートのA1セルを開始位置として文字を書き込みするコードです。
下記をコピーしてください。(右上のマークをクリックするとコピーできます。)
import gspread
from google.oauth2.service_account import Credentials
# 認証のスコープを設定
SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']
# 認証情報をサービスアカウントのJSONファイルから作成
json_path = 'spreadsheetproject.json'
creds = Credentials.from_service_account_file(json_path, scopes=SCOPES)
# gspread を使って認証
gc = gspread.authorize(creds)
# スプレッドシートにアクセス
spreadsheet_name = 'SpreadSheet_test_file'
spreadsheet = gc.open(spreadsheet_name)
worksheet = spreadsheet.sheet1
# データ取得と書き込み
data = worksheet.get_all_values()
print(data)
worksheet.update([['Hello, World!'], ['SpredSheetFirstStep']], 'A1')
Pythonコードを貼り付ける
Visual Studio Codeなどの実行環境にコピーしたサンプルコードを貼り付けましょう。
サービスアカウントファイルとスプレッドシート名を自分の環境に合わせる
貼り付けしたサンプルコードの変数「json_path」と変数「spreadsheet_name」への代入を書きかえます。
「’ ‘」で囲われている部分を書きかえてください。
手順通りの名前ですすめてくれていれば変更は不要です。
サンプルコードのハイライト部分を
...(省略)
# 認証情報をサービスアカウントのJSONファイルから作成
json_path = 'spreadsheetproject.json'
creds = Credentials.from_service_account_file(json_path, scopes=SCOPES)
# gspread を使って認証
gc = gspread.authorize(creds)
# スプレッドシートにアクセス
spreadsheet_name = 'SpreadSheet_test_file'
spreadsheet = gc.open(spreadsheet_name)
...(省略)
Python
例えばこのように書きかえます。
...(省略)
# 認証情報をサービスアカウントのJSONファイルから作成
json_path = '/Users/ryoma/Downloads/spreadsheetproject.json'
creds = Credentials.from_service_account_file(json_path, scopes=SCOPES)
# gspread を使って認証
gc = gspread.authorize(creds)
# スプレッドシートにアクセス
spreadsheet_name = '作成したスプレッドシートのファイル名'
spreadsheet = gc.open(spreadsheet_name)
...(省略)
Python特にjson_pathに代入する部分はフルパスを指定すると良いかもしれません。
(絶対パス、相対パスの違いがわからない場合)
準備完了、実行する
スプレッドシートの「1つ目のシート」にA1セルを開始として、
- 「Hello, World!」
- 「SpredSheetFirstStep」
という文字が書き込まれます。
もう一度実行すると1つ目のシートの内容を読み込んで、内容をCmdやTerminalに表示します。
そちらも確認ください。
なんとかできたよ〜!
動いたけど、理解はしていないかも、、
今回は手順どおり進めて動くだけでじゅうぶん!
コードの解説は今後紹介していくね!
まとめ
Pythonを使用したGoogleスプレッドシートの自動化について、事前設定を中心に解説しました。
- Google Cloud Consoleでプロジェクトを作成する
- Google Drive APIとGoogle Sheets APIを有効にする
- サービスアカウントを作成し、JSONキーファイルをダウンロードする
- Googleスプレッドシートにアクセス権を付与する
これからPythonを使ってGoogleスプレッドシートを効率的に操作できるようになると、データ管理や自動化が大幅に楽になります。
ぜひ試してみてください!