如何直接读取Google Drive的CSV文件到R语言并解决读取报错
报错原因
原代码存在两处可直接触发读取失败的错误:
- 函数名拼写错误:R中用于字符串格式化输出的函数为
sprintf(),不存在sprint()函数,运行时会直接抛出"找不到函数sprint"的报错。 - 导出链接格式错误:代码中拼接的
/d/uc?id=路径为Google Drive普通存储文件的下载路径,不适用于Google Sheets在线表格,请求后会返回HTML格式的页面而非CSV格式的表格数据,最终导致read.csv()解析失败、出现大量乱码/报错。
可行读取方案
方案1:Base R 无额外依赖(适合公开权限的小文件)
文件已经开放公开读取权限的前提下,直接使用Google Sheets官方CSV导出规则拼接链接即可直接读取,无需安装任何第三方包:
# 目标表格ID sheet_id <- "170235QwbmgQvr0GWmT-8yBsC7Vk6p_dmvYxrZNfsKqk" # 拼接正确的CSV导出地址 csv_export_url <- sprintf("https://docs.google.com/spreadsheets/d/%s/export?format=csv", sheet_id) # 读取为数据框,可根据文件实际编码调整fileEncoding参数 df <- read.csv(csv_export_url, check.names = FALSE)
补充说明:如果需要读取表格内指定工作表,可在导出链接末尾追加&gid=对应工作表ID参数,工作表ID可从表格网页端URL的gid=字段获取,默认导出第一个工作表。
方案2:专用包读取(稳定性更强,适配复杂场景)
如果遇到网络波动、大文件读取、需要指定读取范围/后续写入表格的场景,推荐使用专门适配Google Sheets的googlesheets4包读取,无需手动拼接链接:
# 首次使用前安装包 install.packages("googlesheets4") # 加载包 library(googlesheets4) # 公开访问文件无需账号鉴权,关闭默认鉴权流程 gs4_deauth() # 直接传入表格ID即可读取,支持指定sheet、range等参数 df <- read_sheet(sheet_id)
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

