2016-05-18 10 views
1

Google Driveファイルをページ番号Google Drive APIクライアントライブラリを使用してページ付けしたいとします。GoogleドライブAPIクライアントライブラリを使用したファイルのページ設定

私はASP.Net C#でGoogleドライブサービスアカウントを使用しています。アップロードされたファイルにデータを入力するには、次のコードを使用しています。

FilesResource.ListRequest list = service.Files.List(); 
list.MaxResults = 1000; 
if (search != null) 
{ 
    list.Q = search; 
} 

FileList filesFeed = list.Execute(); 
foreach (File item in filesFeed.Items) 
{ 
    // loop the files 
} 

アカウントに100個のファイルがあるとします。

ページごとに10個のレコードのようにファイルを改ページできますか?

答えて

0

「nextPageToken」を使用してページネーションを達成できます。ここでは、サンプルコードを使用してシナリオを説明しようとしています。コード(Java REST API v3を使用)は、合計10ページから6ページ目を取得するためのもので、それぞれに10個のファイルが含まれています。私はここにPageStreamerを使用することをお勧めします、これはあなたのために有用である

public static FileList getPage(Drive service, int pageNumber, int pageSize) throws IOException { 

    private static final int DRIVE_MAX_ITEMS_PER_PAGE = 1000; 
    int skipCount = pageSize * (pageNumber - 1); 

    // Skipping previous pages by requesting only next page token for light weight responce. 
    Drive.Files.List list = service.files().list().setFields("nextPageToken"); 
    while (skipCount > 0) { 
     int pageSize = 0; 
     if (skipCount > DRIVE_MAX_ITEMS_PER_PAGE) { 
      pageSize = DRIVE_MAX_ITEMS_PER_PAGE; 
      skipCount -= DRIVE_MAX_ITEMS_PER_PAGE; 
     } else { 
      pageSize = skipCount; 
     } 
     FileList result = list.setPageSize(pageSize).execute(); 
     if (result.getNextPageToken() == null) { 
      throw new RuntimeException(
        "getPage Failed: Google drive does't have requested page."); 
     } 
     list.setPageToken(result.getNextPageToken()); 
    } 

    // Returning requested page. 
    return list.setQ(query).setFields("*").setPageSize(pageSize).execute(); 
} 

希望.....

+0

あなたの努力に感謝しましたが、私はC#のコーディングラインを変換できませんでした。 FileListと同じようにresult = list.setPageSize(pageSize).execute(); "setPageSize"プロパティはサポートされていません。私はGoogle.Apis.Drive.v2を使用していますので、ページングの問題は依然として保留中です –

+0

質問はC#と.netクライアントライブラリについて、なぜJavaで例を投稿するのですか? – DaImTo

+0

私はちょうど彼に解決策を提示しようとしました。 – Venkat

1

は、ドライブのAPI V2を使用した例です。

var pageStreamer = new PageStreamer<Google.Apis.Drive.v2.Data.File, FilesResource.ListRequest, FileList, string>(
                (request, token) => request.PageToken = token, 
                response => response.NextPageToken, 
                response => response.Items); 

var req = service.Files.List(); 
req.MaxResults = 1000; 


foreach (var result in pageStreamer.Fetch(req)) 
    { 
    Console.WriteLine(result.Id); 
    } 
+0

@DaImTo ... PageStreamerはGoogle.Apis.Drive.v2で動作しません。私はGoogleドライブのファイルページングの問題に非常に悩まされています –

+0

ドライブV2用に更新されました – DaImTo

+0

@DaImTo Google Drive API V2のPageStreamerはどうやって取得できますか?私はそれへの参照を見つけることができません。 – Atihska

関連する問題