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

通过文件夹名称查询Google Drive文件夹ID遇404错误求助

Google Drive按文件夹名称查找folder_id报错解决

错误信息

Error: <HttpError 404 when requesting https://www.googleapis.com/drive/v2/files?q=%27None%27+and+trashed%3Dfalse&maxResults=1000&supportsAllDrives=true&includeItemsFromAllDrives=true&alt=json returned "File not found: ". Details: "[{'message': 'File not found: ', 'domain': 'global', 'reason': 'notFound', 'location': 'file', 'locationType': 'other'}]">

代码问题分析

你的脚本存在两个核心问题:

  1. 返回逻辑错误:get_folder_id_by_name函数中,return None写在for循环的if分支内部,导致仅检查第一个文件夹,只要不匹配就直接返回空值,后续文件夹完全不会被遍历。
  2. 查询逻辑缺陷:当前查询会拉取所有文件夹再本地遍历,效率极低;且如果self.options['backup_folder']为空值,会导致API查询参数异常,触发404错误。

修复方案

修正后的代码

def get_folder_id_by_name(self, drive, folder_name):
    # 空值直接返回,避免无效API请求
    if not folder_name:
        return None
    # 直接在查询条件中加入文件夹名称,由服务器端过滤结果
    query = f"mimeType='application/vnd.google-apps.folder' and title='{folder_name}' and trashed=false"
    # 若需访问共享驱动器,添加对应参数
    file_list = drive.ListFile({
        'q': query,
        'supportsAllDrives': True,
        'includeItemsFromAllDrives': True
    }).GetList()
    # 返回第一个匹配的文件夹ID(存在同名时可按需调整逻辑)
    for file in file_list:
        return file['id']
    # 无匹配项时返回空值
    return None

if not self.backup:
    backup_folder_name = self.options['backup_folder']
    backup_folder_id = self.get_folder_id_by_name(self.drive, backup_folder_name)

    if not backup_folder_id:
        # 创建新文件夹
        folder = self.drive.CreateFile({
            'title': backup_folder_name,
            'mimeType': 'application/vnd.google-apps.folder'
        })
        folder.Upload()
        backup_folder_id = folder['id']
        print(f"Created folder '{backup_folder_name}' with ID: {backup_folder_id}")

关键改动说明

  • 提前拦截空值:先判断folder_name是否为空,避免传入无效值导致API请求异常。
  • 优化查询条件:将文件夹名称直接加入API查询参数,让Google Drive服务器端完成过滤,减少本地处理的数据量。
  • 修正返回逻辑:将return None移至for循环外部,确保遍历完所有匹配结果后再返回空值。
  • 显式声明共享驱动器支持:如果脚本需要访问共享驱动器,明确传入supportsAllDrives和includeItemsFromAllDrives参数,避免访问范围问题。

内容的提问来源于stack exchange,提问作者Jeroen Oudshoorn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:37:51