使用Python创建Google Drive文件夹失败求助
使用Python创建Google Drive文件夹失败求助
看起来你已经搭好了基础的认证和文件夹创建框架,但大概率是代码没写完或者遇到了权限类的坑?先帮你把完整的实现补全,再聊聊这类问题最容易踩的几个点:
首先补全你的代码
你原来的CreateFolder函数没写完,完整的创建逻辑应该包含调用Drive API的files().create接口,同时加上更完善的错误处理,这样能快速定位问题:
import os import google.auth from googleapiclient.discovery import build from google.oauth2 import service_account from googleapiclient.errors import HttpError SCOPES = ['https://www.googleapis.com/auth/drive'] SERVICE_ACCOUNT_FILE = 'assets/key/key.json' def Authenticate(): try: creds = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) print('Authentication Successful') return creds except Exception as e: print(f"Authentication failed: {str(e)}") return None def CreateFolder(parent_folder_id=None): creds = Authenticate() if not creds: return None try: service = build("drive", "v3", credentials=creds) folder_metadata = { "name": "AutoUpload", "mimeType": "application/vnd.google-apps.folder" } # 如果要把文件夹创建在你个人Drive的某个文件夹下,需要指定父文件夹ID if parent_folder_id: folder_metadata["parents"] = [parent_folder_id] # 调用API创建文件夹,指定返回ID字段 response = service.files().create( body=folder_metadata, fields='id' ).execute() print(f"Folder created successfully! Folder ID: {response.get('id')}") return response.get('id') except HttpError as error: print(f"创建文件夹时出错:{error}") return None # 运行示例 if __name__ == "__main__": # 可选:如果要创建到你个人Drive的文件夹,替换成你的目标文件夹ID # 文件夹ID可以从Drive的URL里获取:https://drive.google.com/drive/folders/[这里就是ID] # target_parent_id = "your-personal-drive-folder-id" # CreateFolder(target_parent_id) # 默认创建在服务账号自己的Drive存储空间里 CreateFolder()
最容易踩的几个坑
看不到创建的文件夹
服务账号有自己独立的Google Drive存储空间,默认你在个人Drive里是看不到它创建的文件夹的。解决办法:- 把服务账号的邮箱(在
key.json里的client_email字段)添加到你个人Drive某个文件夹的共享列表(赋予编辑权限),然后创建时指定这个文件夹为父目录 - 或者把服务账号创建的文件夹共享给你的个人邮箱
- 把服务账号的邮箱(在
认证失败
- 检查
SERVICE_ACCOUNT_FILE的路径是否正确,确保key.json文件存在且能被读取 - 确认
key.json是从Google Cloud控制台正确下载的服务账号密钥
- 检查
权限报错(403)
- 如果指定了父文件夹ID,要确保服务账号已经被添加为该文件夹的编辑者
- 检查
SCOPES是否正确,你用的https://www.googleapis.com/auth/drive是全权限,没问题,但如果是更严格的权限要确保覆盖创建文件夹的需求
找不到资源报错(404)
大概率是指定的父文件夹ID错误,或者服务账号没有权限访问这个文件夹,仔细核对ID和共享设置
备注:内容来源于stack exchange,提问作者Kingdawnage




