pythonとsheets API v4を使ってスプレッドシートにアクセスする〜②事前準備 sheets APIのactivateとcredential.jsonの取得方法編〜

API関連
この記事は約7分で読めます。
Advertisements

Sheets APIを使うための事前準備

さて、実際にsheets APIを利用するためには以下のステップで作業が必要です。

  1. sheets APIの有効化
  2. 認証情報のDL(json)
  3. 関連pythonパッケージのpip install
  4. oauth関連認証認可設定

ステップ一つづつみていきます。

sheets APIの有効化

まずは以下のリンクからsheets APIを有効化していきます。一旦開いてみましょう。

sheets APIリンク

プロジェクト選択画面

プロジェクトを既に作成されている方は、対象とするプロジェクトを選択して、APIを有効化してください。

プロジェクトを過去作成したことがないひとは、新規のプロジェクトを作成するところからスタートとなります。

アカウント自体がない方はアカウントの作成からスタートです。

プロジェクトの作成

さて、プロジェクトの作成ですが、一応簡単に説明します。まずは、ドロップダウンからプロジェクトを作成を選択して、続行をクリックします。

続行を押すと、プロジェクトをgoogleが自動作成します。少し時間がかかりますが、プロジェクト作成が完了すると以下のような画面に移ります。

私は、以前にAPIを有効化しているので、少し表示される文言が異なりますが、気にせず認証情報を作成していきましょう。認証情報に進むをクリック。

続いてアプリケーションデータを選択して、必要な認証情報を作成をクリック。ここからはガイダンスに応じて進めて言ってください。

注意事項

credential.jsonを発行していくことが目的ですが、今回の中でOAuthの認証画面設定まで終わらせる必要があります。OAuth認証画面はread_onlyのAPIを利用する場合は不要ですが、書き込みを行う場合は必要になります。

その際にGoogle APIのスコープで、スコープの追加をクリックして、少なくとも…/auth/spreadsheets/を追加してください。このAPIを有効化した後での認証画面経由で吐き出したtoken/認可コードでないと書き込みはできません。

作成するクライアントIDのタイプは”その他”で適当にローカルからアクセスしていることがわかる名前にでもしておきましょう。

認証情報のDL

さて設定関係の情報が作成できると以下のような状態にダッシュボードがなっているかと思います。

ここで、DLボタンをクリックして、jsonをDLします。

DL先フォルダ:自由です。後からPassを指定します。
file name: crient_secret.jsonとでもしておいてください。名前も自由です

関連するパッケージのインストール

今回の認証やAPI利用に必要なPackageを仮想環境下のpipにインストしていきます。

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

必要なものが漏れてるかもしれないので、一応念のため最終入ってるものはこんな感じになってれば動くはず。

pip list

実際にpyファイル内でimportしているのは以下。pickleが追加必要な方は追加してください。

from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

認証してみよう

from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the fipile token.pickle.
SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly',
          'https://www.googleapis.com/auth/spreadsheets',
          ]

# The ID and range of a sample spreadsheet.
SAMPLE_SPREADSHEET_ID = 'スプレッドシートのIDを入力'
#SAMPLE_RANGE_NAME = 'test!A1:B2'

json_path = "client_secret.jsonファイルのPathを入力"

def get_auth(SCOPES,json_path):
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                json_path, SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('sheets', 'v4', credentials=creds)
    return service

if __name__=="__main__":
    get_auth(SCOPES, json_path)

get_authのコードは基本サンプルコードのままです。中身的には、pickleファイルが存在する場合は、そこでtokenやrefresh_tokenを呼び出したりしています。pickleがわからない方は、とりあえずざざっとググってみましょう。そのうち、このブログでも紹介しますが、まぁobjectを固めたものみたいなイメージで。

python pickleドキュメント: https://docs.python.org/ja/3.7/library/pickle.html

tokenやrefresh_tokenがわからない方も、ググってみましょう。ただし、こちらはpythonの概念ではなくて、API利用時の基本知識なので、少し難しいかもです。一旦ノンプロは理解しなくてもいいかも。。

ファイルのパスの検索方法がわからない方は以下の記事を。

一回実行して、うまくいけば、同一フォルダ内に、token.pickleという名前のファイルが出来上がります。これができていればOKです。

まとめ

少し長い手続きが必要でしたがいかがでしたか?

APIは便利なのですが、事前手続きは慣れていないと専門用語も多く迷う部分もあるかと思います。都度ぐぐりながら単語や概念も理解していくと今後の利用でも楽になっていくかと思います。

次は実際にスプレッドシートのデータを呼び出してみます。

関連記事: pythonとsheets API v4を使ってスプレッドシートにアクセスする

pythonでスクレイピング等をした後に取得したデータをスプレッドシートで管理してみましょう。ローカルのpythonコードからgoogle sheets APIを利用してスプレッドシートにアクセスする方法を紹介しています。

  1. pythonとsheets API v4を使ってスプレッドシートにアクセスする〜①概要編〜
  2. pythonとsheets API v4を使ってスプレッドシートにアクセスする〜②事前準備 sheets APIのactivateとcredential.jsonの取得方法編〜
  3. pythonとsheets API v4を使ってスプレッドシートにアクセスする〜③sheets APIを利用してスプレッドシートのデータを取得する〜
  4. pythonとsheets API v4を使ってスプレッドシートにアクセスする〜④sheets APIを利用してスプレッドシートへデータを書き込む〜

コメント

  1. […] pythonとsheets API v4を使ってスプレッドシートにアクセスする〜②事前準備 … […]

  2. […] pythonとsheets API v4を使ってスプレッドシートにアクセスする〜②事前準備 … […]