1

我正在尝试根据 driveId 和 folderId 检索特定文件夹。如果文件夹位于用户驱动器中,我可以通过其 ID 轻松检索文件夹,如下所示:

folder, err := srv.Files.Get(folderId).Do()

如果我传递的 folderId 是指共享驱动器中的一个文件夹,那么我会收到一条 404 消息,其中包含类似“googleapi:错误 404:找不到文件:1abcdefgh23456789., notFound”的消息。

理想情况下,我正在寻找类似的东西:

folder, err := srv.Files.Get(folderId).DriveId(driveId).Do()

但这失败了,因为没有这样的函数(“srv.Files.Get(folderId).DriveId undefined (type *drive.FilesGetCall 没有字段或方法 DriveId”)。

我试图通过使用更复杂的List方法来解决这个问题:

res, err := srv.Files.List().Q("id = '" + folderId + "' and mimeType = 'application/vnd.google-apps.folder'").SupportsAllDrives(true).IncludeItemsFromAllDrives(true).Corpora("drive").DriveId(driveId).Do()

但这在运行时失败,并显示“googleapi:错误 400:无效值,无效”。我可以使用name = '<my folder name>',但这显然不好,因为可能有重复的名称。

通过 ID 获取共享驱动器中的文件夹的正确方法是什么?

4

2 回答 2

1

您正在做的事情目前是正确的。用于搜索的Q参数非常有限,目前没有其他方法可以仅请求剪切驱动。

我怀疑您需要做的是在本地对它们进行排序

文件资源有一个名为 drive id的字段,您可以检查它。如果它没有作为响应的一部分返回,请确保将其添加到字段中。

在此处输入图像描述

于 2021-08-16T06:24:29.427 回答
0

要获取位于共享驱动器上的文件,您需要将参数设置supportsAllDrivestrue

请参阅文档

于 2021-08-16T08:27:02.090 回答