Google Picker API

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Google Picker ダイアログ

Google Picker は、Google ドライブに保存されている情報の「File Open」ダイアログです。Google Picker には次の機能があります。

  • Google ドライブの UI に類似したデザイン。
  • ドライブ ファイルのプレビューとサムネイルを表示する複数のビュー。
  • インライン モーダル ウィンドウであるため、ユーザーがメイン アプリから離れることはありません。

Google Picker API は、ユーザーがドライブ ファイルを開いたりアップロードしたりできるようにウェブアプリで使用できる JavaScript API です。

アプリケーションの要件

Google Picker を使用するアプリケーションはすべて、既存の利用規約を遵守する必要があります。最も重要なことは、リクエストでは自分自身を正確に識別する必要があります。

また、Google Cloud プロジェクトも必要です。

環境をセットアップする

Google Picker API の使用を開始するには、環境を設定する必要があります。

API の有効化

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

  • Google Cloud コンソールで、Google Picker API を有効にします。

    API の有効化

API キーを作成する

API キーは、大文字、小文字、数字、アンダースコア、ハイフンを含む長い文字列です(例: AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe)。この認証方法は、[このリンクでインターネット上のすべてのユーザー] 共有設定を使用して共有された Google Workspace ファイルなど、一般公開されているデータに匿名でアクセスするために使用されます。詳細については、API キーを使用して認証するをご覧ください。

API キーを作成するには:

  1. Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] > [API キー] をクリックします。
  3. 新しい API キーが表示されます。
    • [ をコピー] をクリックして、アプリのコードで使用する API キーをコピーします。API キーは、プロジェクトの認証情報の [API キー] セクションにも表示されます。
    • [キーを制限] をクリックして詳細設定を更新し、API キーの使用を制限します。詳しくは、API キー制限を適用するをご覧ください。

ウェブ アプリケーションの認証情報を承認する

エンドユーザーとして認証し、アプリ内のユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は、Google の OAuth サーバーで 1 つのアプリを識別するために使用されます。アプリを複数のプラットフォームで実行する場合は、プラットフォームごとに個別のクライアント ID を作成する必要があります。

  1. Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] > [OAuth クライアント ID] をクリックします。
  3. [アプリケーションの種類] > [ウェブ アプリケーション] をクリックします。
  4. [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
  5. アプリに関連する承認済み URI を追加します。
    • クライアントサイド アプリ(JavaScript) - [承認済みの JavaScript 生成元] で [URI を追加] をクリックします。次に、ブラウザ リクエストに使用する URI を入力します。これにより、アプリケーションが OAuth 2.0 サーバーに API リクエストを送信できるドメインを識別します。
    • サーバーサイド アプリ(Java、Python など) - [承認済みのリダイレクト URI] の下にある [URI を追加] をクリックします。次に、OAuth 2.0 サーバーがレスポンスを送信できるエンドポイント URI を入力します。
  6. [CREATE] をクリックします。OAuth クライアント作成画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。

    クライアント ID をメモします。クライアント シークレットはウェブ アプリケーションでは使用されません。

  7. [OK] をクリックします。新しく作成された認証情報は、[OAuth 2.0 クライアント ID] に表示されます。
  8. (省略可)JavaScript クイックスタートの前提条件として認証情報を作成する場合は、API キーを生成する必要もあります。
重要: Picker オブジェクトの作成時に、アプリケーションは、非公開のユーザーデータにアクセスするビューを含む OAuth 2.0 アクセス トークンを送信する必要があります。アクセス トークンをリクエストするには、OAuth 2.0 を使用した Google API へのアクセスをご覧ください。

Google Picker を表示する

このガイドの残りの部分では、ウェブアプリから Google Picker を読み込んで表示する方法について説明します。サンプル全体を参照するには、Google Picker のコードサンプルに移動します。

Google Picker ライブラリを読み込む

Google Picker ライブラリを読み込むには、読み込みが成功した後に呼び出すライブラリ名とコールバック関数を指定して gapi.load() を呼び出します。

    <script>
      let tokenClient;
      let accessToken = null;
      let pickerInited = false;
      let gisInited = false;

      // Use the API Loader script to load google.picker
      function onApiLoad() {
        gapi.load('picker', onPickerApiLoad);
      }

      function onPickerApiLoad() {
        pickerInited = true;
      }

      function gisLoaded() {
        // TODO(developer): Replace with your client ID and required scopes
        tokenClient = google.accounts.oauth2.initTokenClient({
          client_id: 'YOUR_CLIENT_ID',
          scope: 'YOUR_SCOPES',
          callback: '', // defined later
        });
        gisInited = true;
    }
    </script>
    <!-- Load the Google API Loader script. -->
    <script async defer src="https://apis.google.com/js/api.js" onload="onApiLoad()"></script>
    <script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"></script>
    

onApiLoad() 関数は、Google Picker ライブラリを読み込みます。onPickerApiLoad() コールバック関数は、Google Picker ライブラリが正常に読み込まれた後に呼び出されます。

Google Picker を表示する

createPicker() 関数は、Google Picker API の読み込みが完了し、OAuth トークンが作成されていることを確認します。次に、この関数は Google Picker のインスタンスを作成し、表示します。

    // Create and render a Google Picker object for selecting from Drive
    function createPicker() {
      const showPicker = () => {
        // TODO(developer): Replace with your API key
        const picker = new google.picker.PickerBuilder()
            .addView(google.picker.ViewId.DOCS)
            .setOAuthToken(accessToken)
            .setDeveloperKey('YOUR_API_KEY')
            .setCallback(pickerCallback)
            .build();
        picker.setVisible(true);
      }

      // Request an access token
      tokenClient.callback = async (response) => {
        if (response.error !== undefined) {
          throw (response);
        }
        accessToken = response.access_token;
        showPicker();
      };

      if (accessToken === null) {
        // Prompt the user to select a Google Account and ask for consent to share their data
        // when establishing a new session.
        tokenClient.requestAccessToken({prompt: 'consent'});
      } else {
        // Skip display of account chooser and consent dialog for an existing session.
        tokenClient.requestAccessToken({prompt: ''});
      }
    }
    

Google Picker インスタンスを作成するには、成功時に呼び出す ViewoauthTokendeveloperKey、コールバック関数(pickerCallback)を指定する必要があります。

Picker オブジェクトは一度に 1 つの View をレンダリングします。少なくとも 1 つのビューを指定するには、ViewIdgoogle.​picker.​ViewId.*)を使用するか、特定のタイプのインスタンス(google.​picker.​*View)を作成します。ビューのレンダリング方法をより詳細に制御するには、タイプ別にビューを指定します。

Google Picker に複数のビューが追加されている場合、ユーザーは左側のタブをクリックして、あるビューから別のビューに切り替えることができます。タブは、ViewGroup オブジェクトを使用して論理的にグループ化できます。

Picker コールバックを実装する

Picker コールバックは、ファイルの選択やキャンセルの押下など、Google Picker でのユーザー操作に応答できます。

    // A simple callback implementation.
    function pickerCallback(data) {
      let url = 'nothing';
      if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
        let doc = data[google.picker.Response.DOCUMENTS][0];
        url = doc[google.picker.Document.URL];
      }
      let message = `You picked: ${url}`;
      document.getElementById('result').innerText = message;
    }
    

コールバックは、JSON エンコードされた data オブジェクトを受け取ります。このオブジェクトには、ユーザーが Google Picker で実行するアクション(google.picker.Response.ACTION)が含まれます。ユーザーがアイテムを選択すると、google.picker.Response.DOCUMENTS 配列にもデータが入力されます。この例では、メインページに google.picker.Document.URL が表示されています。データ フィールドの詳細については、JSON リファレンスをご覧ください。

特定のファイル形式をフィルタする

特定のアイテムを除外する方法として、ViewGroup を使用します。次の例では、「Google Drive」サブビューにドキュメントとプレゼンテーションのみが表示されています。

    let picker = new google.picker.PickerBuilder()
        .addViewGroup(
          new google.picker.ViewGroup(google.picker.ViewId.DOCS)
              .addView(google.picker.ViewId.DOCUMENTS)
              .addView(google.picker.ViewId.PRESENTATIONS))
        .setOAuthToken(oauthToken)
        .setDeveloperKey(developerKey)
        .setCallback(pickerCallback)
        .build();
    

Google Picker の外観を変更する

PickerBuilder.enableFeature() 関数を使用して、Google Picker ウィンドウの外観を微調整します。たとえば、ビューが 1 つしかない場合は、ナビゲーション ペインを非表示にして、ユーザーがアイテムを表示するスペースを広げることができます。以下は、この機能を説明するスプレッドシート検索選択ツールの例です。

     let picker = new google.picker.PickerBuilder()
         .addView(google.picker.ViewId.SPREADSHEETS)
         .enableFeature(google.picker.Feature.NAV_HIDDEN)
         .setDeveloperKey(developerKey)
         .setCallback(pickerCallback)
         .build();
     

他の言語で Google Picker をレンダリングする

UI 言語は、setLocale(locale) メソッドを使用して PickerBuilder インスタンスにロケールを指定することで指定します。フランス語の例を次に示します。

    let picker = new google.picker.PickerBuilder()
        .addView(google.picker.ViewId.IMAGE_SEARCH)
        .setLocale('fr')
        .setDeveloperKey(developerKey)
        .setCallback(pickerCallback)
        .build();
    

現在サポートされているロケールは次のとおりです。

af
am
ar
bg
bn
ca
cs
da
de
el
en
en-GB
es
es-419
et
eu
fa
fi
fil
fr
fr-CA
gl
gu
hi
hr
hu
id
is
it
iw
ja
kn
ko
lt
lv
ml
mr
ms
nl
no
pl
pt-BR
pt-PT
ro
ru
sk
sl
sr
sv
sw
ta
te
th
tr
uk
ur
vi
zh-CN
zh-HK
zh-TW
zu