Pythonでgspreadを使用しGoogleスプレッドシートを新規作成する

Pythonでgspreadを使用しGoogleスプレッドシートを新規作成することについて解説しています。

gspreadライブラリは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■GoogleCloudPlatformの設定(Drive APIとSheets APIの有効化)

まずは、GoogleCloudPlatformの設定を行いますので、Googleアカウントを登録・取得し、GoogleCloudPlatform(https://console.cloud.google.com/apis/dashboard)にアクセスします。

GoogleCloudPlatform(https://console.cloud.google.com/apis/dashboard)に、初回アクセスすると、GoogleCloudPlatformのウインドウが表示されますので、ウインドウ内の「国」から「日本」を選択し、「利用規約」の「私は、GoogleCloudPlatformの利用規約、および適用されるサービスとAPIの利用規約に同意します。」のチェックボックスをチェックを入れます。チェック後、「最新情報をメールで通知」の定期的なメール受信をチェックするかどうか決めて、その後「同意して続行」ボタンをクリックします。

クリック後、ダッシュボードが表示されます。ダッシュボード上部の「プロダクトとリソースの検索」をクリックし、「Drive API」、「Sheets API」とそれぞれ入力し、「Drive API」と「Sheets API」の各ページにある「有効する」ボタンをクリックし、APIを有効にします。

■OAuth 同意画面(アプリ登録の編集)

有効化後、「認証情報」のページ内の「同意画面を設定」か、ダッシュボードの「OAuth 同意画面」をクリックします。

クリックすると、「OAuth 同意画面」のページに移動します。移動後、「User Type」で「外部」を選択し、「作成」ボタンをクリックします。

クリックすると、「アプリ登録の編集」ページに移動します。ページ内のアプリ情報で「アプリ名」と「ユーザーサポートメール」を入力、もしくは選択します。「アプリのロゴ」は設定しません。

ページ下に移動し、「アプリのドメイン」は設定しません。

さらにページ下に移動し、「承認済みドメイン」は設定せずに、「デベロッパーの連絡先情報」で連絡先としてメールアドレスを入力します。

入力後、「保存して次へ」ボタンをクリックします。

クリックすると、「アプリ登録の編集」の「スコープ」の項目に移動します。移動しますが、「スコープ」の設定は行わなくて問題ありません。

問題ありますので、ページ下に移動し、「保存して次へ」ボタンをクリックします。

クリックすると、「アプリ登録の編集」の「テストユーザー」の項目に移動します。移動後、「ADD USERS」ボタンをクリックします。クリックすると「ユーザーを追加」というウインドウが表示されますので、入力欄にメールアドレスを入力します。入力後「追加」ボタンをクリックします。クリックすると、ユーザーが追加されますので、追加された状態で「保存して次へ」ボタンをクリックします。

クリックすると、「アプリ登録の編集」の「概要」の項目に移動します。移動後、ページ内で編集した内容を確認します。

確認後、ページ下の「ダッシュボードに戻る」ボタンをクリックします。クリックするとダッシュボードへ戻ります。

■認証情報を作成

戻った後に、認証情報を作成しますので、GoogleCloudPlatformのダッシュボードの左側メニューから「認証情報」をクリックします。クリックすると、「認証情報」のページが表示されますので、上部の「認証情報の作成」をクリックします。

クリックすると、プルダウンメニューが表示されますので、「OAuth クライアント ID」をクリックします。

クリックすると、「OAuth クライアント IDの作成」ページが表示されますので、「アプリケーションの種類」をクリックします。

クリックすると、プルダウンメニューが表示されますので、メニューから「デスクトップアプリ」を選択します。

選択すると、「名前」の入力欄が表示されますので、入力されているOAuth 2.0 クライアントの名前に問題がなければ「作成」ボタンをクリックします。問題があれば、名前を変更します。

ボタンをクリックすると、OAuth 2.0 クライアントの作成が開始され、しばらくすると「OAuth クライアントを作成しました」というウインドウが表示されます。表示後、「OK」ボタンをクリックし、ウインドウを閉じます。

ウインドウを閉じると、「認証情報」のページ内の「OAuth 2.0 クライアント ID」の項目に作成したOAuth クライアントの名前が表示されます。表示されている右側に矢印のマークがありますので、こちらをクリックします。

クリックすると、Webブラウザ上でjson形式のファイルのダウンロードが開始されます。しばらくすると、Webブラウザで指定されている保存場所に「client_secret_***.apps.googleusercontent.com.json」といったファイルがダウンロードされます。

ダウンロード後、今回はファイルを「C:\Users\user_\test(フォルダパス)」へ移動しておきます。移動後、「client_secret_***.apps.googleusercontent.com.json」というファイル名から分かりやすいように「client_secret.json」という名前に変更します。

■gspreadを使用しGoogleスプレッドシートの作成する

変更後、gspreadを使用しGoogleスプレッドシートの作成するスクリプトを書いていきます。

■コード

import gspread

gc = gspread.oauth(credentials_filename=r'C:\Users\user_\test\client_secret.json',authorized_user_filename=r'C:\Users\user_\test\authorized_user.json')

sh = gc.create("test00001")

Googleスプレッドシートの作成する場合は、importでgspreadを呼び出します。

その後に、gspread.service_account()関数を使用します。括弧内の第1の引数,パラメータには、先ほどの「client_secret.json」というファイルの名前と置かれている場所(フォルダパス)を指定します。これで資格情報ファイルを用いて、認証を行います。第2の引数,パラメータには、認証を行った後に生成されるクレデンシャルファイル(json)を保存するために、クレデンシャルファイルのファイル名と、保存する場所(フォルダパス)を指定します。指定することで、認証を行った後に、このクレデンシャルファイルを利用し、認証を行います。なお、これを指定しないと「FileNotFoundError: [Errno 2] No such file or directory: ‘C:\\Users\\user_\\AppData\\Roaming\\gspread\\authorized_user.json’」といったエラーが発生します。

次に、gc.create()関数を使用します。括弧内には、作成するGoogleスプレッドシートの名前を指定します。これで新規でGoogleスプレッドシートを作成することができます。

■実行・検証

このスクリプトを「g_sheet_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=****.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A54107%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=xdvrCqcsxxwnnK3cfuJbB7vGl9aBQi&access_type=offline

実行してみると、上記のメッセージが表示され、自動的にWebブラウザが起動。

起動後、上記のページが表示されます。表示後、「Googleにログイン」と表示されいますので、表示されている登録・取得したGoogleアカウントを選択します。

このアプリは Google で確認されていません
アプリが、Google アカウントのプライベートな情報へのアクセスを求めています。デベロッパー(***@gmail.com)と Google によって確認されるまで、このアプリを使用しないでください。

デベロッパーの場合は、この画面が表示されないようにするには確認リクエストを送信してください。

選択すると、上記の「このアプリは Google で確認されていません」と表示されたページに移動します。移動後、ページ内の「詳細」ボタンをクリックします。

クリックすると、詳細の文章が表示されます。表示された文章の下に「アプリ名(安全ではないページ)に移動」といったリンクが表示されていますので、こちらをクリックします。

クリックすると、「GoogleDriveAPItest(アプリ名) が Google アカウントへのアクセスを求めています」と表示されたページに移動します。ページ内に「GoogleDriveAPItest(アプリ名) がアクセスできる情報を選択してください」と書かれていますので、「Google ドライブのすべてのファイルの表示、編集、作成、削除 です。」と「Google スプレッドシートのすべてのスプレッドシートの参照、編集、作成、削除 です。」のチェックボックスにチェックを入れます。

チェックを入れた後に、ページの下に移動します。移動すると「Continue」ボタンがありますので、こちらをクリックします。

クリックすると、「The authentication flow has completed. You may close this window.(認証フローが完了しました。このウィンドウを閉じても構いません。)」と表示されたページに移動します。これで資格情報ファイルを用いてのGoogleの認証が完了となりましたので、ウインドウを閉じます。

閉じると、コマンドプロンプト上では何も出力されませんが、Googleドライブを確認します。

Googleドライブを確認すると、Googleスプレッドシートが新規で作成されていることが確認できました。

コメント

タイトルとURLをコピーしました