スプレッドシートを便利に操作できるAPIとして、Sheets APIがGoogleより提供されています。
ただ、公式のAPIはやや素人には使いにくく、Pythonでスプレッドシートを操作したい人は、大抵gspreadというライブラリを使っています。
今回は、このgspreadを使用するための第一歩。OAuth認証を行う方法についてまとめていきたいと思います。
API Keyを使ったアクセス方法もありますが、一般に公開された情報以外ではOAuth2.0を使う方が安心とのこと(詳細な理由までは理解していない、、、)。
内容としては初心者向けとなっていますので、玄人の方は読み飛ばすところはさらっと読み飛ばしてください。
【環境】
- WSL2 (Window でLinuxを使えるサービス)
- Ubuntu 20.04
- Python3.8.0
OAuth認証でスプレッドシートにPythonでアクセスする
①Google Cloud Platformのアカウントを作る
俗にいうGCPですね。まずはこのアカウントを作りましょう。
アカウントの作り方についてはいろんなサイトでまとまっているのでそちらで学習いただければと思います。
②Google Cloud PlatFormでプロジェクトを作る
画面の左上のところをクリック。僕はすでに作っているプロジェクトが表示されています。

右上から「新しいプロジェクト」を選択。

プロジェクト名を適当に付けます。世界中で一意な名前を付ける必要があるので僕が使った名前はもう使えません。

場所は、デフォルトで大丈夫です。
入力したら作成を押しましょう。これだけでプロジェクトの作成が完了です!
③OAuth同意画面の設定
プロジェクトのコンソール画面にリダイレクトされるので、左上のメニューバー>APIとサービス>OAuth同意画面を選択します。

内部か外部か問われますが、有料のGoogleアカウントを使ってないと内部は選べません。作成をクリックしましょう。

アプリ登録画面に行きますので、アプリ名とユーザーサポートメール、デベロッパーの連絡先情報を入力しましょう。メールアドレスは、お使いのGMailアドレスでかまいません。


次の画面で、スコープが選べます。スコープは、操作の権限を細かく設定するためのもので、セキュリティを高めたい場合は、設定すべきものです。今回は手元のPCからスプレッドシートを操作したいだけなので、何も入力せずに「保存して次へ」を押します。

テストユーザーの画面に移動するので、+ADD USERSをクリックし、自身のアカウントのメールアドレスを登録しましょう。登録したら保存して次へを押します。

これで、OAuth同意画面の設定が完了しました。ダッシュボードに戻ります。
④認証情報の登録
ダッシュボードに戻ったら、左のサイドバーメニューで、「認証情報」を選び、「+認証情報作成」>「OAuthクライアントID」を選びます。

アプリケーションの種類は「デスクトップアプリケーション」を選択。名前は適当に入力したら、作成を押しましょう。

クライアントIDとクライアントシークレットという認証に必要な情報が作成されます。JSONをダウンロードを押して、JSOJNファイルをダウンロードします。

⑤SheetsAPIとGoogleDriveAPIを有効化する
サイトバーメニュー>APIとサービス>ライブラリから、Sheets APIとGoogleDriveAPIを検索して、両方とも有効化しておきます。

⑥ダウンロードしたJSONファイルを特定のフォルダに移動
ダウンロードしたファイルを「~/.config/gspread/」というディレクトリに「credentials.json」という名前で保存します。
gspreadをインストールしていない方は、以下のコマンドでインストールしましょう。
pip install gspread
Windowsの方は、「%APPDATA%\gspread\」というディレクトリになります。
「~/.config/gspread/」ではない、ディレクトリにJSONファイルを置くことも可能です。気になる方はドキュメントを参照ください。
⑦Pythonからスプレッドシートを作成する
これで準備は完了しました!お疲れ様です。
コードを入力して、Pythonからスプレッドシートを作成してみましょう!
import gspread
gc = gspread.oauth()
sh = gc.create("Sheet API TEST")
Pythonを実行すると、認証を求める画面が表示されます。

個のアプリはGoogleで確認されていません。と出ますが、続行を押せば問題なく進みます。

必要な認可をチェックして続行

スプレッドシートがマイドライブに作成されました!

以上でSheetAPIへの接続方法の説明は終了します!
注意点
最後に注意点を一つ。
この認証情報の有効期限は、1週間です。なので、期限が切れたら使えなくなります。
その場合、再びJSONファイルをダウンロードして、既存のcredentials.jsonを置き換えてください。