2017-06-12 144 views
0

我正在尝试制作一个应用程序,列出保存在我的谷歌驱动器上的所有电子表格文件或者与我的Google帐户共享的电子表格文件。如何列出保存在Google Drive上/与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个文件有什么特别之处,就我所知,它们与其余的一样。 我错过了什么?

回答

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'

相关问题