使用Google Sheets/Drive API创建表格的权限及定位问题咨询
解决Google Drive中服务账号创建表格的位置与权限问题
一、确认表格创建位置的问题
你的代码存在关键错误:parents参数要求传入字符串数组,但你直接传了单个folder_id字符串,这会导致Google Drive API忽略该参数,表格被创建到服务账号自身的默认Drive空间,而非你指定的目标文件夹。
修正代码参数
file_metadata = { 'name': 'sampleName-test1', 'parents': [folder_id], # 改为数组格式 'mimeType': 'application/vnd.google-apps.spreadsheet', }
验证创建位置
可调用Drive API接口查看文件实际所在文件夹:
file = drive_service.files().get(fileId=res['id'], fields='parents').execute() print("文件所在文件夹ID:", file['parents'])
二、修复访问权限问题
服务账号创建的文件默认仅自身拥有访问权限,个人账号打开会提示申请权限。需给目标用户(如你的个人邮箱)添加文件权限:
添加权限代码
在创建文件后追加以下逻辑:
# 配置权限参数 permission_metadata = { 'type': 'user', 'role': 'writer', # 可按需改为reader(只读)或owner(所有者) 'emailAddress': '你的个人邮箱地址' } # 给用户添加权限 drive_service.permissions().create( fileId=res['id'], body=permission_metadata, sendNotificationEmail=True # 是否发送权限通知邮件,可选设置 ).execute()
其他权限场景
- 若需给多个用户授权,循环调用
permissions().create()即可; - 若需允许任何人查看,可将
type设为anyone,role设为reader。
内容的提问来源于stack exchange,提问作者LIONEL JOSEPH
相关产品推荐
相关产品推荐

