Google Drive C#SDK:FileList中的项目过多

时间:2015-03-12 10:37:49

标签: c# google-drive-api

当我检索我的GoogleDrive帐户的所有文件(和文件夹)时,我应该得到类似1500个列表元素的东西,但是我得到的回复超过3000。我查看了List,发现有些文件是2-3次。那是为什么?

以下是我用来检索文件的代码:

public async Task<List<File>> RetrieveAllFilesAsList(DriveService service, string query = null)
    {


        List<File> result = new List<File>();
        FilesResource.ListRequest request = service.Files.List();

        if (query != null)
        {
            request.Q = query;
        }

        do
        {
            try
            {
                FileList files = await request.ExecuteAsync();

                result.AddRange(files.Items);
                request.PageToken = files.NextPageToken;
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred (from RetrieveAllFilesAsList): " + e.Message);
                request.PageToken = null;
            }
        }
        while (!String.IsNullOrEmpty(request.PageToken));

        return result;

    }

UPDATE1:

        public async Task<List<File>> RetrieveAllFilesAsList(DriveService service, string query = null)
    {
        List<File> result = new List<File>();
        FilesResource.ListRequest request = service.Files.List();
        request.MaxResults = 1000;

        if (query != null)
        {
            request.Q = query + " AND trashed=false";
        }
        else
        {
            request.Q = "trashed=false";
        }

        do
        {
            try
            {
                FileList files = await request.ExecuteAsync();

                result.AddRange(files.Items);
                request.PageToken = files.NextPageToken;
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred (from RetrieveAllFilesAsList): " + e.Message);
                request.PageToken = null;
            }
        }
        while (!String.IsNullOrEmpty(request.PageToken));

        int i;
        for (i = 0; i < result.Count; i++ )
        {
            System.IO.File.AppendAllText(@"C:\Users\carl\Desktop\log.txt", result[i].Id + "\t" + result[i].Title + "\t" + result[i].ExplicitlyTrashed.ToString() + "\r\n");
        }

        // prints 3120 Lines
        System.IO.File.AppendAllText(@"C:\Users\carl\Desktop\log.txt", "" + i + Environment.NewLine);

        //Count = 3120
        System.IO.File.AppendAllText(@"C:\Users\carl\Desktop\log.txt", "" + result.Count);

        return result;

    }

Word没能给我正确的行数,所以我在我的功能上做了。 但我可以在文件中找到FileId 2-3次。

1 个答案:

答案 0 :(得分:0)

我还不能写评论,所以根据API  来自谷歌

&#34;注意:此方法默认返回所有文件。这包括结果中trashed = true的文件。使用trashed = false查询参数从结果中过滤这些参数。&#34;

那么你能检查一下其他api的url实际被调用了吗?看来你需要在List方法上放一些过滤器。