2016-05-01 65 views
3

Googleドライブ(ドライブセクション)の特定のセクションにあるすべてのファイルを取得しようとしています。JavaでGoogleドライブAPIを使用すると、ドライブセクション/フォルダ内のファイルのみを一覧表示する方法

それらは私が探していますファイルです:

enter image description here

あなたはProjet 3という名前のフォルダとProcessus TP2 questionsという名前のファイルを見ることができます。フォルダには1つのファイルしかありません。

しかし、私はすべてのファイルを一覧表示しようとすると、私は何千ものファイルを取得します。 Googleドライブの上部にある検索バーを使用して検索すると、検索されますが、どこにあるのかはわかりません(Gmailの添付ファイルですか?)。

これは私の検索クエリです:

FileList result = service.files().list()
  
    .setQ("mimeType != 'application/vnd.google-apps.folder' 
      and trashed = false")
  
    .setSpaces("drive") 
    .setFields("nextPageToken, files(id, name, parents)") 
    .setPageToken(pageToken)
  
    .execute(); 

は、どのように私は、ウェブUI上で私のドライブ節/フォルダの中に見ることができる唯一のファイルを一覧表示することができますか?

ありがとうございました。

答えて

4

使用「両親」クエリでプロパティ、:

FileList result = service.files().list()
  
.setQ("'root' in parents and mimeType != 'application/vnd.google-apps.folder' and trashed = false")
  
.setSpaces("drive") 
.setFields("nextPageToken, files(id, name, parents)") 
.setPageToken(pageToken)
  
.execute(); 

ルートではなく、特定のフォルダの内容を一覧表示したい場合 - 使用していることクエリで 'root'の代わりにフォルダのIDを指定します。

0

実際には、Files: listに記載されているすべての適用可能なパラメータでHTTPリクエストを送信して、ファイルのリストを取得することができます。

このサンプルコードは、ドキュメントに記載されている:それはさておき

private static List<File> retrieveAllFiles(Drive service) throws IOException { 
    List<File> result = new ArrayList<File>(); 
    Files.List request = service.files().list(); 

    do { 
     try { 
     FileList files = request.execute(); 

     result.addAll(files.getItems()); 
     request.setPageToken(files.getNextPageToken()); 
     } catch (IOException e) { 
     System.out.println("An error occurred: " + e); 
     request.setPageToken(null); 
     } 
    } while (request.getPageToken() != null && 
      request.getPageToken().length() > 0); 

    return result; 
    } 

、あなたは、ユーザーの内のファイルを一覧表示または再編成に関連した必要性を持っているので、完全なドライブのスコープを要求するように利用可能なスコープを使用することを検討する必要がある場合がありますChoose Auth Scopesで説明されているように駆動します。

リクエスト形式:このような

(https://www.googleapis.com/auth/drive) 
関連する問題