【问题标题】:How to list ALL spreadsheets saved on/shared with Google Drive?如何列出保存在 Google Drive 上/与 Google Drive 共享的所有电子表格?
【发布时间】:2017-06-12 19:08:05
【问题描述】:

我正在尝试制作一个应用程序来列出所有保存在我的 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 个文件有什么特别之处,据我所知,它们与其他文件相同。 我错过了什么?

【问题讨论】:

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


    【解决方案1】:

    我不确定您的代码有什么问题您确定您的驱动器帐户中有超过 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 参数添加到您的请求来完成搜索。

    mimeType='application/vnd.google-apps.spreadsheet'

    【讨论】:

      猜你喜欢
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多