如何列出Google云端硬盘保存/共享的所有电子表格?

时间:2017-06-12 10:13:59

标签: c# google-api google-drive-api google-api-dotnet-client

我试图创建一个应用程序,列出保存在我的Google驱动器上或与我的Google帐户共享的所有电子表格文件。

我使用的是C#API V3,我的方法部分有效。问题在于它没有显示所有文件,只显示了一些文件(其中42个是准确的。但是当我通过网络浏览器查看我的驱动器时,我可以看到数百个电子表格被创建由我或与我分享。)

以下是我如何初始化服务:

string[] scopes = { DriveService.Scope.DriveAppdata, SheetsService.Scope.Spreadsheets };
var credential = GoogleWebAuthorizationBroker.AuthorizeAsync
(
    new ClientSecrets
    {
        ClientId = "12345",
        ClientSecret = "54321"
    },
    scopes,
    "USER_NAME",
    CancellationToken.None
).Result;

var baseClientServiceInitializer = new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = LIB_NAME + " v" + LIB_VERSION,
};

this.driveService = new DriveService(baseClientServiceInitializer);

这是列表请求:

List<File> allFilesOnDrive = new List<File>();

var listRequest = this.driveService.Files.List();
listRequest.PageSize = 25;
listRequest.Fields = "nextPageToken, files(name, id)";
do
{
    FileList fileBulk = listRequest.Execute();

    allFilesOnDrive.AddRange(fileBulk.Files);
    listRequest.PageToken = fileBulk.NextPageToken;
} while (listRequest.PageToken != null);

运行后, allFilesOnDrive 列表中只有42个文件。我无法看到这些特定的42个文件有什么特别之处,就我所知,它们和其他文件一样。 我错过了什么?

1 个答案:

答案 0 :(得分:0)

我不确定您的代码是否有问题您确定您的云端硬盘帐户中有超过42个文件?请注意,您应该尝试使用页面流媒体

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

var allFiles = new Google.Apis.Drive.v3.Data.FileList();
allFiles.Files = new List<Google.Apis.Drive.v3.Data.File>();

foreach (var result in pageStreamer.Fetch(request))
        {
         allFiles.Files.Add(result);
        }

从我的List all files on Google drive教程

中删除了代码

通过在您的请求中添加Q参数来完成搜索。

  

mime类型= '应用/ vnd.google-apps.spreadsheet'