【问题标题】:search file inside shared drive By id File using the Query filter使用查询过滤器按 id 文件搜索共享驱动器内的文件
【发布时间】:2020-01-10 07:33:54
【问题描述】:

我想检查一个文件夹是否属于共享驱动器。我实现了这段代码,但它在查询中返回错误 400 无效值。

            var request = service.Files.List();
            var query = "id='" + driveFileId + "'";
            request.IncludeTeamDriveItems = true;
            request.SupportsTeamDrives = true;
            request.Q = query;

            request.Fields = "nextPageToken, files(id, name,parents,mimeType)";

            request.PageToken = pageToken;

            var result =request.Execute();

【问题讨论】:

  • 为什么不直接使用 file.get 并检查文件夹本身?你为什么要做一个files.list?
  • 您能否提供更多说明?

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


【解决方案1】:

以下代码将在我的驱动器帐户中查找名为 kintting 的文件夹。

然后它将遍历所有结果(可能不止一个)检查两个参数,其中一个应该告诉您它是否属于团队。

var request = service.Files.List();
request.Q = "name='knitting' and mimeType='application/vnd.google-apps.folder'";
request.Fields = "*";
var result = await request.ExecuteAsync();

foreach (var file in result.Files)
     {
      // check file.DriveId or file.TeamDriveId

      }

如果您有相关文件夹的 ID。从说以前的搜索。你可以直接使用

 var request = service.Files.Get(fileId);
 request.Fields = "*";
 var result = await request.ExecuteAsync();

【讨论】:

  • 感谢您的回答,但您正在遍历我的案例的结果,我有 17400 个文件,这需要很长时间,我想通过查询搜索 id 来优化时间。这可能吗?
  • 你看到 q 参数了吗?这是用于搜索,它只寻找文件夹。因此 mimetype。它还通过 name 搜索文件夹。除非您有 17400 个与您想要搜索的名称相同的文件夹,否则它不会循环 17400 个文件。这真的是你唯一的选择,除非你有之前调用的文件夹 ID,然后你可以使用 files.get。
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多