You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Google Drive API列取非根目录文件触发GoogleApiException 404错误如何解决

问题解决方案

错误原因

你报错的核心原因是Google Drive API的查询语法中,parents字段的匹配条件不支持直接填写文件夹名称,仅支持填写文件夹对应的唯一ID,你直接传入字符串'Admin'无法匹配到合法的资源ID,因此触发404错误。

解决步骤

第一步:先获取Admin文件夹对应的唯一ID

你可以先调用API查询所有文件夹,筛选出名称为Admin的文件夹,获取它的ID,参考代码如下:

private static string GetFolderId(string folderName)
{
    DriveService service = GetDriveService();
    FilesResource.ListRequest listRequest = service.Files.List();
    // 筛选类型为文件夹、名称匹配的资源
    listRequest.Q = $"mimeType = 'application/vnd.google-apps.folder' and name = '{folderName}'";
    listRequest.Fields = "files(id, name)";
    // 如果需要查询共享盘内的文件夹,需要加上这行
    // listRequest.SupportsAllDrives = true;
    
    var files = listRequest.Execute().Files;
    if (files != null && files.Count > 0)
    {
        // 注意如果有多个重名文件夹,这里返回第一个匹配的,可根据自己的业务调整逻辑
        return files[0].Id;
    }
    throw new Exception($"未找到名称为{folderName}的文件夹");
}

第二步:用文件夹ID构造查询条件

拿到Admin文件夹的ID后,替换原来查询语句里的'Admin'部分即可:

string adminFolderId = GetFolderId("Admin");
fileList.Q = $"mimeType != 'application/vnd.google-apps.folder' and '{adminFolderId}' in parents";
// 如果文件夹在共享盘,同样需要加这行配置
// fileList.SupportsAllDrives = true;

注意事项

  • 如果你的Admin文件夹位于共享驱动器(Shared Drive)中,必须给ListRequest对象添加SupportsAllDrives = true的配置,否则API默认只会查询你个人云盘下的资源,找不到共享盘内的文件夹。
  • 如果存在多个重名的Admin文件夹,可以在获取文件夹ID的逻辑中增加父目录、创建时间等额外筛选条件,确保拿到的是目标文件夹的ID。
  • 注意你申请的API权限范围要包含文件夹的读取权限,否则也可能出现找不到资源的问题。

内容的提问来源于stack exchange,提问作者Avrohom Yisroel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:15:05