Pythonでgsheetsを使用しGoogleスプレッドシートへ簡単に接続する

Pythonでgsheetsを使用しGoogleスプレッドシートへ簡単に接続してみます。

なお、Googleスプレッドシートへ簡単に接続するために、gsheetsライブラリを使用しますが、gsheetsはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

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

■GoogleCloudPlatformの設定

まずは、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」という名前に変更します。

■接続するGoogleスプレッドシートを作成する

変更後、Googleドライブ上で接続するGoogleスプレッドシートを作成します。

Googleドライブで「新規」ボタンをクリックします。

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

選択後、スプレッドシートを作成します。今回は、上記の「test01」というスプレッドシートを作成しました。

これで準備が整いました。

■gsheetsを使用しGoogleスプレッドシートへ簡単に接続する

準備が整った後に、gsheetsを使用しGoogleスプレッドシートへ簡単に接続するためのスクリプトを書いていきます。

■コード

import pandas as pd
import numpy as np
from gsheets import Sheets

sheets = Sheets.from_files(r"C:\Users\user_\test\client_secret.json")

url = "https://docs.google.com/spreadsheets/d/*****/"

s = sheets.get(url)

s.sheets[0].to_csv(make_filename= "sheet1.csv")

df = pd.read_csv("sheet1.csv")

print(df)

Googleスプレッドシートへ接続するために、sheetsという変数を定義し、その中でSheets.from_files()関数を使用します。Sheets.from_files()関数の括弧内には引数,パラメータとして、ダウンロードしたjsonファイルの名前(client_secret.json)と置かれている場所(C:\Users\user_\test)を渡します。

次にurlという変数を定義し、その中に作成したGoogle スプレッドシートのURLを格納します。

なお、URLにはスプレッドシートIDを含めます。

括弧後、sheets.get()関数を使用し、括弧内に引数,パラメータとしてURL変数を渡し、スプレッドシートへの接続を行い、スプレッドシートの情報をto_csv()関数で「sheet1.csv」というCSV形式に変換。

変換後、pd.read_csv()関数で「sheet1.csv」のCSVファイルを読み込み、読み込んだデータをprint()関数で出力してみます。

■実行・検証

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

C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\oauth2client\_helpers.py:255: UserWarning: Cannot access C:\Users\user_/storage.json: No such file or directory
  warnings.warn(_MISSING_FILE_MESSAGE.format(filename))

Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth?client_id=850777902059-t4fvqg5j1gbqrlg6gpqao2dmhk03m8sg.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly&access_type=offline&response_type=code

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

  --noauth_local_webserver

実行してみると、コマンドプロンプトに上記の文字列が出力されます。

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

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

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

選択すると、「このアプリは Google で確認されていません」と表示されたページに移動します。ページ内に「詳細」という文字が表示されているので、こちらをクリックします。

クリックすると、「リスクを理解し、デベロッパー(***@gmail.com)を信頼できる場合のみ、続行してください。」という文字列が表示されます。表示された下に「GoogleDriveAPItest(安全ではないページ)に移動」といった文字が表示されていますので、こちらをクリックします。

クリックすると、「GoogleDriveAPI が Google アカウントへのアクセスを求めています」といった文字列が表示されているページに移動します。ページ内の「Google ドライブのすべてのファイルの表示、ダウンロード です。」と「Google スプレッドシートのすべてのスプレッドシートの参照 です。」のチェックボックスにチェックを入れます。

チェックを入れた後に、ページ下に移動し、「Continue」ボタンをクリックします。

クリックすると、「The authentication flow has completed.(認証フローが完了しました。)」と表示されたページに移動します。移動後、このページを閉じます。

Authentication successful.(認証に成功しました。)

閉じた後に、コマンドプロンプトを確認すると、上記の文字列が出力されます。

出力後、作成したスプレッドシートの情報が取得され、CSV形式のファイルに変換。変換されたファイルの情報を読み込み、print()関数で出力させることができました。

※なお、今回はGoogle Cloud プラットフォームの無料トライアルの期間が過ぎていましたが、「Drive API」と「Sheets API」を有効し、Googleスプレッドシートへ接続することができました。

コメント

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