如何用R读取企业版OneDrive的xlsx文件到本地环境用于Shiny应用?
解决方案
你之前调用的open_file方法本身设计用途为唤起浏览器打开在线文件,无法将数据导入R环境,替换为Microsoft365R内置的download_file方法即可实现需求,具体方案如下:
本地测试可用代码
首先修正你代码中的包名拼写错误,示例代码如下:
library(Microsoft365R) library(readxl) # 登录企业版OneDrive odb <- get_business_onedrive() # 创建临时文件存储xlsx,重启R后会自动清理无需手动删除 temp_file <- tempfile(fileext = ".xlsx") # 从OneDrive下载文件到本地临时路径 odb$download_file(src = "lcursos.xlsx", dest = temp_file, overwrite = TRUE) # 读取文件内容到R数据框 data <- read_excel(temp_file)
Shiny服务器无交互部署适配
部署到Web服务器时,需配置非交互式认证避免每次运行弹出手动登录窗口,可按以下方式调整:
- 首次在服务器环境运行时使用设备码认证,生成缓存令牌:
odb <- get_business_onedrive( tenant = "你的企业Azure租户ID", auth_type = "device_code" )
- 后续运行可直接调用缓存的令牌,无需重复认证,也可自行注册Azure应用,传入应用ID和密钥实现完全无感知的自动认证。
权限问题排查
如果运行过程中依然出现403错误,可按以下规则排查:
- 确认当前登录的企业账号对目标文件
lcursos.xlsx有至少读取权限 - 确认Azure账号的Microsoft365R应用权限已获得企业管理员同意,开通了OneDrive文件读取权限
- 无需自行拼接文件直链,
download_file方法会自动处理企业认证逻辑,避免直链访问的权限问题
内容的提问来源于stack exchange,提问作者MANUEL ALEJANDRO RODRIGUEZ ORT
相关产品推荐
相关产品推荐

