2017-06-12 148 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'

相關問題