存储在Sharepoint的预格式化WebDataRocks报告能否在R Shiny组件启动时加载
报错截图如下:
核心问题根因
你传入的SharePoint链接本质是预览页面地址,不是文件直链,同时存在跨域访问限制,所以WebDataRocks无法正常解析加载。
分步解决步骤
步骤1:优先采用后端拉取文件的方案(规避跨域+鉴权问题)
推荐用Microsoft365R包在Shiny服务端先拉取SharePoint存储的配置文件和数据集,再传入组件,不需要前端直接调用SharePoint接口,实现启动自动加载最新版本的需求,示例代码如下:
# 先安装依赖包 # install.packages(c("shiny", "webdatarocks", "Microsoft365R")) library(shiny) library(webdatarocks) library(Microsoft365R) # 初始化SharePoint连接,首次运行会弹出浏览器授权 sp_site <- get_sharepoint_site(site_url = "你的SharePoint站点URL") # 替换为你的文档库名称,默认一般是"Shared Documents" sp_drive <- sp_site$get_drive("Shared Documents") ui <- fluidPage( pivtaOutput("pivot_table") ) server <- function(input, output, session) { output$pivot_table <- renderPivta({ # 拉取最新的透视表报告配置文件(JSON格式) report_content <- sp_drive$get_item("存储路径/你的透视表配置.json")$load_content() # 拉取最新的数据集文件(CSV/JSON都可) data_content <- sp_drive$get_item("存储路径/你的数据集.csv")$load_content() # 直接传入解析后的内容,不需要传URL pivta( report = report_content, dsource = data_content ) }) } shinyApp(ui, server)
步骤2:如果坚持用前端直传URL的方案,需完成两个配置
- 把SharePoint的分享链接转为直链:将默认分享链接中的
:f:/r/替换为:f:/r/download.aspx?SourceUrl=,同时把分享权限设置为「所有拥有链接的人员均可查看」 - 联系SharePoint管理员在站点后台配置CORS规则,允许你的Shiny应用域名的跨域请求
额外校验项
- 如果你的报告配置文件中硬编码了数据源路径,需要删除对应配置,通过
dsource参数直接传入拉取到的最新数据集,避免加载旧版本数据 - 确认使用的WebDataRocks版本支持动态传入配置和数据源,免费版无此功能限制
内容的提问来源于stack exchange,提问作者Tig
相关产品推荐
相关产品推荐

