使用gspread复制表格到指定文件夹遇404错误及文件位置异常求助
问题解决方法
一、解决"File not found: <folder_id>"错误
出现404错误的核心原因是服务账号无法访问目标文件夹,或文件夹ID有误,按以下步骤排查:
- 确认文件夹ID正确性:打开目标Google Drive文件夹,URL格式为
https://drive.google.com/drive/folders/XXX,其中XXX就是正确的folder_id,不要包含任何多余字符。 - 给服务账号授予文件夹权限:
- 从服务账号JSON密钥文件中找到
client_email字段,复制该邮箱地址。 - 打开目标文件夹,点击右上角「共享」,粘贴服务账号邮箱,设置权限为「编辑」或「内容管理者」后保存。
- 从服务账号JSON密钥文件中找到
二、解决复制的表格不在个人Drive显示的问题
不指定folder_id时,复制的表格会存放在服务账号自身的独立Drive空间里,而非你的个人Drive,因此你无法直接看到。解决方式:
- 方法1:按第一部分步骤设置好权限后,复制时指定目标folder_id,文件会直接出现在该文件夹中。
- 方法2:若文件已复制到服务账号Drive,可通过代码将其移动到目标文件夹,或手动共享到你的个人邮箱:
- 调用
client.list_spreadsheet_files()获取文件ID,再用Google Drive API的files.update方法修改文件的父文件夹。 - 或先将服务账号的Drive文件夹共享给你,找到目标文件后手动共享到个人邮箱。
- 调用
补充代码检查点
- 你的代码中
scope已包含https://www.googleapis.com/auth/drive,这部分无需修改。 - 确认源表格
<sheet_id>的权限:需将服务账号邮箱添加到源表格的共享列表中,确保服务账号能访问源文件。
内容的提问来源于stack exchange,提问作者Marco Rodrigues
相关产品推荐
相关产品推荐

