17

ユーザーが自分のGoogleドライブをナビゲートし、後でWebサイトで参照する1つ以上のドキュメントをDBから選択するためのWebUIを構築しようとしています。私は現在、PHPを使用してWebインターフェースを構築しています。

私が直面している問題は、フォルダIDごとにファイルのリストを取得する単一の関数が見つからないことです。

私は使ってみました:

$service->children->listChildren($rootFolderId)

…しかし、それはフォルダ内のファイルの参照ID(いわゆる子リソースアイテム)のみを提供します。つまり、すべてのメタデータを取得するには、それらのファイルをループして、それぞれの呼び出しを作成する必要があります。 UIが必要です。

不運にも..

$service->files->list()

..フォルダごとのフィルタリングオプションなしですべてのファイルを一覧表示します。

ドライブサーバーへの1回の呼び出しからフォルダファイルリストを抽出する効率的な方法があるかどうか知りたいです。私は実際に、古いGoogleDOCAPIに対してこのタスクを実行できたことを覚えています。

ご助力ありがとうございます

4

4 に答える 4

31

注意:この回答はv2APIを使用しています。新しいアプリケーションはv3APIに書き込む必要があります。

drive.files.listエンドポイントを使用して、特定のフォルダーに属するファイルを一覧表示できるようになりました

これを行うには、?q=次のようにクエリパラメータを使用できます。

GET https://www.googleapis.com/drive/v2/files?q="'<FOLDER_ID>' in parents"

PHPでは、それは

$service->files->list(array('q' => "'<FOLDER_ID>' in parents"));
于 2012-07-11T21:32:50.497 に答える
3

クエリパラメータ   は、親にそのような<FOLDER_ID>を持つファイルやフォルダ<FOLDER_ID> in parentsを   一覧表示しますか? 私の意見では、これは期待される結果です。上記の答えでは、次のようになっているので、私はこの質問をします。

...特定のフォルダに属するファイルを一覧表示します。

検索パラメータに関するドキュメントでは、次のように説明しています。

これにより、IDが1234567である親フォルダーのすべての子フォルダーが検索されます。


and mimeType='application/vnd.google-apps.folder'
クエリ文字列に次のようなものを追加すると、フォルダのみのリストが返される可能性があることを追加します。

于 2012-07-16T22:45:02.617 に答える
1

検索クエリを使用する必要はありません。GET https://www.googleapis.com/drive/v2/files/ {folderId}/childrenに電話をかけるだけです

https://developers.google.com/drive/v2/reference/children/list

于 2013-06-27T09:15:08.553 に答える
1

今では簡単です。心配しないでください。特定のフォルダからすべてのファイルとフォルダを取得する場合は、このコードをコピーしてプロジェクトに貼り付けるだけで、特定のフォルダからすべてのファイルとフォルダが取得されます。注:独自のフォルダIDが必要です

 List<File> result = new ArrayList<File>();
    Files.List request = null;

    try {
          request = mService.files().list();//plz replace your FOLDER ID in below line
          FileList files = request.setQ("'"+MyFoler_Id+"' in parents and trashed=false"").execute();
          result.addAll(files.getItems());          
          request.setPageToken(files.getNextPageToken());
        } 
      catch (IOException e)
      {
        System.out.println("An error occurred: " + e);
        request.setPageToken(null);
      }

//取得したファイルとフォルダのタイトルを印刷します。

  for(File f:result)
  {
      System.out.println("My recvd data "+f.getTitle());
  }
于 2014-04-03T10:18:59.393 に答える