Python のクイックスタート

クイックスタートでは、Google Workspace API を呼び出すアプリを設定して実行する方法について説明します。

Google Workspace クイックスタートでは、API クライアント ライブラリを使用して認証と認可フローの詳細を処理します。独自のアプリではクライアント ライブラリを使用することをおすすめします。このクイックスタートでは、テスト環境に適した簡略化された認証方法を使用します。本番環境では、アプリに適したアクセス認証情報を選択する前に、認証と認可について確認することをおすすめします。

Gmail API にリクエストを送信する Python コマンドライン アプリケーションを作成します。

目標

  • 環境を設定する。
  • クライアント ライブラリをインストールする。
  • サンプルをセットアップします。
  • サンプルを実行します。

前提条件

このクイックスタートを実行するには、次の前提条件を満たす必要があります。

  • Gmail が有効になっている Google アカウント

環境の設定

このクイックスタートを完了するには、環境を設定します。

API を有効にする

Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。

新しい Google Cloud プロジェクトを使用してこのクイックスタートを完了するには、OAuth 同意画面を構成して、自分自身をテストユーザーとして追加します。Cloud プロジェクトでこの手順をすでに完了している場合は、次のセクションに進みます。

  1. Google Cloud コンソールで、メニュー > [API とサービス] > [OAuth 同意画面] に移動します。

    OAuth 同意画面に移動

  2. アプリのユーザータイプを選択し、[作成] をクリックします。
  3. アプリ登録フォームに入力し、[保存して次へ] をクリックします。
  4. 現時点では、スコープの追加をスキップして、[Save and Continue] をクリックします。今後、Google Workspace 組織外で使用するアプリを作成する場合は、アプリに必要な認可スコープを追加して確認する必要があります。

  5. ユーザーの種類に [外部] を選択した場合は、テストユーザーを追加します。
    1. [テストユーザー] で [ユーザーを追加] をクリックします。
    2. メールアドレスとその他の承認済みテストユーザーを入力し、[保存して次へ] をクリックします。
  6. アプリ登録の概要を確認します。変更するには、[編集] をクリックします。アプリ登録に問題がない場合は、[Back to Dashboard] をクリックします。

デスクトップ アプリケーションの認証情報を承認する

エンドユーザーを認証し、アプリ内でユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は、Google の OAuth サーバーで個々のアプリを識別するために使用します。アプリを複数のプラットフォームで実行する場合は、プラットフォームごとに個別のクライアント ID を作成する必要があります。
  1. Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] > [OAuth クライアント ID] をクリックします。
  3. [アプリケーションの種類] > [デスクトップ アプリ] をクリックします。
  4. [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
  5. [作成] をクリックします。[OAuth クライアントの作成] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
  6. [OK] をクリックします。新しく作成された認証情報が [OAuth 2.0 クライアント ID] に表示されます。
  7. ダウンロードした JSON ファイルを credentials.json として保存し、ファイルを作業ディレクトリに移動します。

Google クライアント ライブラリをインストールする

  • Python 用の Google クライアント ライブラリをインストールします。

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

サンプルを構成する

  1. 作業ディレクトリに、quickstart.py という名前のファイルを作成します。
  2. quickstart.py に次のコードを追加します。

    gmail/quickstart/quickstart.py
    import os.path
    
    from google.auth.transport.requests import Request
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError
    
    # If modifying these scopes, delete the file token.json.
    SCOPES = ["https://www.googleapis.com/auth/gmail.readonly"]
    
    
    def main():
      """Shows basic usage of the Gmail API.
      Lists the user's Gmail labels.
      """
      creds = None
      # The file token.json 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.json"):
        creds = Credentials.from_authorized_user_file("token.json", SCOPES)
      # 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(
              "credentials.json", SCOPES
          )
          creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open("token.json", "w") as token:
          token.write(creds.to_json())
    
      try:
        # Call the Gmail API
        service = build("gmail", "v1", credentials=creds)
        results = service.users().labels().list(userId="me").execute()
        labels = results.get("labels", [])
    
        if not labels:
          print("No labels found.")
          return
        print("Labels:")
        for label in labels:
          print(label["name"])
    
      except HttpError as error:
        # TODO(developer) - Handle errors from gmail API.
        print(f"An error occurred: {error}")
    
    
    if __name__ == "__main__":
      main()

サンプルの実行

  1. 作業ディレクトリで、サンプルをビルドして実行します。

    python3 quickstart.py
    
  1. サンプルを初めて実行すると、アクセスの承認を求められます。
    1. Google アカウントにまだログインしていない場合は、ログインを求められたらログインします。複数のアカウントにログインしている場合は、認証に使用するアカウントを 1 つ選択してください。
    2. [Accept] をクリックします。

    Python アプリケーションが Gmail API を実行し、呼び出します。

    認可情報はファイル システムに保存されるため、サンプルコードを次回実行するときに、認可を求められません。

次のステップ