我试图创建一个应用程序,列出保存在我的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个文件有什么特别之处,就我所知,它们和其他文件一样。 我错过了什么?
答案 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'