API не выводит список вновь созданных папок - PullRequest
0 голосов
/ 14 февраля 2020

Я использую Google Drive API V3. Я пытался составить список файлов и папок из уже существующей папки. Ранее эта папка состояла только из файлов. Список вернул все файлы. Затем, когда я создал 2 новые папки. Я не могу найти эти две папки.

Ниже показан мой C# метод:

        public void FindFiles(FindFilesParam p)
        {
            // Define parameters of request.
            FilesResource.ListRequest listRequest = _service.Files.List();
            listRequest.PageSize = p.PageSize;
            //listRequest.Fields = "nextPageToken, files(id, name)";
            //listRequest.Fields = "nextPageToken, files(*)";
            //listRequest.Fields = "nextPageToken, files(id, name, md5Checksum, createdTime, modifiedTime, size)";
            listRequest.Fields = "nextPageToken, files(*)";
            if ( !string.IsNullOrEmpty(p.FolderId))
                listRequest.Q = $@"('{p.FolderId}' in parents)";
            Google.Apis.Drive.v3.Data.FileList fileList = listRequest.Execute();
            while (!string.IsNullOrWhiteSpace(fileList.NextPageToken))
            {
                listRequest.PageToken = fileList.NextPageToken;
                fileList = listRequest.Execute();
                if (FindFilesReturnedPage != null)
                {
                    var e = new FindFilesReturnedPageEventArgs(
                        fileList.Files, p.RelativePath);
                    FindFilesReturnedPage(this, e);
                    if (e.Cancel)
                        break;
                }
            }

            if (FindFilesFinished != null)
                FindFilesFinished(this, EventArgs.Empty);
        }

    public class FindFilesParam
    {
        public FindFilesParam()
        {
            PageSize = 10;
        }

        public string FolderId { set; get; }
        public string RelativePath { set; get; }
        public int? PageSize { set; get; }
    }


// Calling this as follows:

FindFiles(new FindFilesParam()
{
    FolderId = "1hYcRWXaQcg1Noh06rPCouIgIl5TZ8BWP",
    RelativePath = string.Empty
});

1 Ответ

0 голосов
/ 14 февраля 2020

Вы не используете первую страницу списка файлов, код в начале while переопределяет первую страницу списка файлов, созданную вне времени.

Вместо этого используйте этот фрагмент кода убедитесь, что вы будете использовать как первую, так и последнюю страницу списка файлов:

 Google.Apis.Drive.v3.Data.FileList fileList = listRequest.Execute();
 while (true) {
     .......
     //Print or use files list
     ........

     //Break loop if there's no NextPageToken
     if(!string.IsNullOrWhiteSpace(fileList.NextPageToken)) break;

     listRequest.PageToken = fileList.NextPageToken;
     fileList = listRequest.Execute();
}
...