R读取Google Drive CSV文件报错并返回异常HTML内容问题
直接读取Google Drive CSV文件的解决方案
你遇到的报错本质是请求返回的内容不是CSV文件,是Google Drive的权限验证/访问提示页面的HTML内容,因此read.csv解析时会报不完整行警告,读取结果也不是预期的表格数据。可按以下两种方案解决:
方案1:使用googledrive包读取(推荐,稳定性最高)
你已经在项目依赖中加载了googledrive包,直接使用包的内置方法读取即可,无需手动拼接URL,也不会生成本地临时文件:
- 首先配置无交互授权,避免shiny运行时弹出浏览器验证框:
- 本地开发环境先运行一次
drive_auth(),完成浏览器账号授权后,会自动在项目根目录生成.secrets缓存文件夹 - 在代码开头添加授权配置:
# 配置授权参数,使用本地缓存的凭证实现无交互验证 options(gargle_oauth_cache = ".secrets", gargle_oauth_email = "你的Google账号绑定邮箱") drive_auth() - 本地开发环境先运行一次
- 替换原有的读取代码:
library(dplyr) file_id <- "1Jj6nj1FivQHC7b5yzd3JeFfPwyTHbsGr" df <- drive_get(as_id(file_id)) %>% drive_read_string() %>% read.csv(text = .) - 部署shiny应用到rsconnect时,记得把
.secrets文件夹一同打包上传,避免部署后授权失效。
方案2:公开文件无授权读取方案(适合小体积公开文件)
如果你的CSV文件已经设置为「知道链接的任何人都可查看」,且文件体积小于100M,可以直接用修正后的URL读取,不需要走账号授权:
file_id <- "1Jj6nj1FivQHC7b5yzd3JeFfPwyTHbsGr" # 新增confirm=t参数跳过Google病毒扫描确认页面 df <- read.csv(sprintf("https://drive.google.com/uc?export=download&id=%s&confirm=t", file_id))
注意事项
- 两种方案都需要先确认Google Drive中CSV文件的分享权限为「知道链接的任何人可以查看」,权限设置不正确会一直返回权限验证页面
- 方案2仅支持100M以下的文件,超过体积限制会被Google强制跳转确认页,无法直接解析,必须使用方案1
内容的提问来源于stack exchange,提问作者S44
相关产品推荐
相关产品推荐

