在shinyapp.io部署读取Google Drive表格的Shiny应用报错如何解决
查看部署日志的方法
登录你的shinyapps.io账户后台,进入对应应用的管理页面,找到「Logs」标签即可查看完整的运行报错日志,可以直接定位具体错误原因。
问题修复方案
你遇到的问题由两个常见错误导致,按优先级修复即可:
代码输出ID不匹配
你在UI中定义的输出组件ID是test_output,但服务端赋值用的是output$total,两者ID不一致,即使没有权限问题也无法正常渲染内容,先统一ID即可,比如将服务端代码修改为output$test_output <- renderText({...})。谷歌服务云端授权缺失
本地运行时你已经完成过googledrive、googlesheets4的账号授权,但是shinyapps.io的云端环境没有你的账号凭证,因此无法访问非公开的谷歌表格,可根据你的数据敏感性选择以下两种方案:
- 方案1:非敏感数据场景
直接将目标谷歌表格的共享权限设置为「所有知道链接的用户可查看」,读取时直接传入表格链接即可,无需额外授权,修改读取代码为:
df <- read_sheet("你的谷歌表格完整链接", sheet = "Desired Sheet") %>% drop_na()
- 方案2:敏感数据场景
使用谷歌云服务账号完成授权,步骤如下:- 在谷歌云控制台创建服务账号,下载JSON格式的密钥文件,存放到你的Shiny应用根目录
- 给该服务账号对应的邮箱地址授予目标谷歌表格的「查看者」权限
- 在代码加载包之后增加授权逻辑:
drive_auth(path = "你的服务账号密钥文件名.json") gs4_auth(path = "你的服务账号密钥文件名.json")- 部署时确认密钥文件被一同上传到shinyapps.io即可。
部署校验
部署前可以在本地先运行rsconnect::listBundleFiles()检查待上传的文件列表,确认依赖文件没有遗漏,再执行部署操作。
内容的提问来源于stack exchange,提问作者Barkas
相关产品推荐
相关产品推荐

