2017-03-29 1 views
0

GoogleドライブをGoogleDriva Android APIと併用する場合は、条件を満たすすべてのファイルを取得するためにクエリを作成します。名前が一意の識別子ではないので、複数のファイルに同じ名前を付けることができます。 DriveIdはそうです。しかし時々我々は最新のファイルだけに興味がある。通常の方法(Googleのウェブサイトから)は、このようなものです。最初の結果ヒットのみをGoogleドライブから返す方法はありますか?

void retrieveFiles() { 
    SortOrder sortOrder = new SortOrder.Builder() 
     .addSortDescending(SortableField.MODIFIED_DATE) 
     .build(); 
    Query query = new Query.Builder() 
     .addFilter(Filters.eq(SearchableField.TITLE, filename), "my_filename.txt")) 
     .setSortOrder(sortOrder) 
     .build(); 
    MetadataBufferResult mbr = Drive.DriveApi.query(query).await().getMetadataBuffer(); 

    // Now we can iterate through all the result hits 
    Metadata metadata; 
    Iterator<Metadata> iterator = mbr.getMetadataBuffer().iterator(); 
    metadata = iterator.next(); // get the first hit 
}); 

このクエリは、条件を満たすすべてのファイルのメタデータを返します。しかし、これは私たちが興味を持っているので、検索を最初のファイル(またはそれらのうちの任意の数)に限定すると便利です。並べ替えは、結果を整理することができます。 結果セットを制限する方法はありますか? SQLのTOP N ROWSのようなもの。

答えて

1

あなたが行数を制限するためのpageSizeを設定することができますが、1

に戻ってグループを行うには方法か、SQLでするような明確なはありません。あなたが同じ名前のファイルを持っていれば、それらをすべて取得するつもりです。

私は考えることができる唯一のことは、ORDERBY

orderBy文字列
ソート・キーのコンマ区切りのリストを追加することです。有効なキーは 'createdTime'、 'folder'、 'modifiedByMeTime'、 'modifiedTime'、 'name'、 'quotaBytesUsed'、 'recency'、 'sharedWithMeTime'、 'starred'、 'viewedByMeTime'です。各キーは、デフォルトでは昇順にソートされますが、 'desc'修飾子を使用して を逆にします。使用例: ?orderBy = folder、modifiedTime desc、name。 に現在の制限があり、要求された並べ替え順序が無視される に約100万のファイルを持つユーザーには現在の制限があることに注意してください。

次に、あなたがすでに行っているように見える「modifiedTime」で並べ替えます。その場合は、ローカルの複製を扱うことができます。

関連する問題