Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何列出Google Drive上保存/共享的所有电子表格?_C#_Google Api_Google Drive Api_Google Api Dotnet Client - Fatal编程技术网

C# 如何列出Google Drive上保存/共享的所有电子表格?

C# 如何列出Google Drive上保存/共享的所有电子表格?,c#,google-api,google-drive-api,google-api-dotnet-client,C#,Google Api,Google Drive Api,Google Api Dotnet Client,我正在尝试制作一个应用程序,列出保存在我的谷歌硬盘上或与我的谷歌帐户共享的所有电子表格文件 我使用的是C#API V3,我的方法部分有效。问题是它并没有显示所有的文件,它只显示了部分文件(确切地说是42个文件。但当我通过web浏览器查看驱动器时,我可以看到数百个由我创建或与我共享的电子表格) 以下是初始化服务的方式: string[] scopes = { DriveService.Scope.DriveAppdata, SheetsService.Scope.Spreadsheets }; v

我正在尝试制作一个应用程序,列出保存在我的谷歌硬盘上或与我的谷歌帐户共享的所有电子表格文件

我使用的是C#API V3,我的方法部分有效。问题是它并没有显示所有的文件,它只显示了部分文件(确切地说是42个文件。但当我通过web浏览器查看驱动器时,我可以看到数百个由我创建或与我共享的电子表格)

以下是初始化服务的方式:

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);
List allFilesOnDrive=new List();
var listRequest=this.driveService.Files.List();
listRequest.PageSize=25;
listRequest.Fields=“nextPageToken,files(name,id)”;
做
{
FileList fileBulk=listRequest.Execute();
allFilesOnDrive.AddRange(fileBulk.Files);
listRequest.PageToken=fileBulk.NextPageToken;
}while(listRequest.PageToken!=null);
运行此操作后,allFilesOnDrive列表中只有42个文件。我看不出这些特定的42个文件有什么特别之处,据我所知,它们与其他文件是一样的。
我遗漏了什么?

我不确定你的代码有什么问题。你确定你的驱动器帐户上有超过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);
        }
var pageStreamer=new Google.api.Requests.pageStreamer(
(请求,令牌)=>request.PageToken=令牌,
response=>response.NextPageToken,
response=>response.Files);
var allFiles=new Google.api.Drive.v3.Data.FileList();
allFiles.Files=新列表();
foreach(pageStreamer.Fetch中的var结果(请求))
{
allFiles.Files.Add(结果);
}
代码从我的教程中删除

通过向请求中添加Q参数来完成搜索

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