如何在Python中仅通过名称获取Google Drive空文件夹的ID?
通过文件夹名称获取Google Drive文件夹ID的Python实现
要实现仅通过名称查找Google Drive文件夹ID的功能,你需要先完成Google Drive API的基础配置,以下是完整的实现方案:
前置步骤
- 安装必要的Python库:
pip install google-api-python-client oauth2client
- 前往Google云平台创建项目,启用Google Drive API,生成OAuth2客户端凭据(JSON格式),将文件保存为
credentials.json,放在代码同目录下。
完整函数实现
from googleapiclient.discovery import build from oauth2client.file import Storage from oauth2client.client import OAuth2WebServerFlow from oauth2client.tools import run_flow # 从credentials.json中提取你的凭据信息 CLIENT_ID = '你的客户端ID' CLIENT_SECRET = '你的客户端密钥' OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive.readonly' REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob' def get_drive_service(): # 处理授权流程,生成Drive服务实例 storage = Storage('drive-auth.json') credentials = storage.get() if not credentials or credentials.invalid: flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI) credentials = run_flow(flow, storage) return build('drive', 'v3', credentials=credentials) def findFolderId(folderName): drive_service = get_drive_service() # 构造查询规则:匹配名称、文件夹类型、未被删除的项 query = f"name='{folderName}' and mimeType='application/vnd.google-apps.folder' and trashed=false" # 发起API查询请求 results = drive_service.files().list( q=query, spaces='drive', fields='files(id, name)' ).execute() items = results.get('files', []) if not items: return None # 无匹配文件夹 elif len(items) > 1: # 存在多个同名文件夹时默认返回第一个,可按需添加筛选逻辑(如按创建时间) return items[0]['id'] else: return items[0]['id'] # 测试调用示例 if __name__ == '__main__': target_id = findFolderId('demo') if target_id: print(f"匹配的文件夹ID: {target_id}") else: print("未找到指定名称的文件夹")
关键说明
- 查询规则调整:可修改
query参数中的条件,比如去掉trashed=false会包含已删除文件夹;若要查找共享文件夹,可添加权限相关筛选条件。 - 多结果处理:如果Drive中有多个同名文件夹,可扩展代码通过父文件夹ID、创建时间等维度进一步筛选。
- 权限范围:使用
drive.readonly仅获取只读权限,避免请求不必要的权限。
内容的提问来源于stack exchange,提问作者timp bill
相关产品推荐
相关产品推荐

