You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Shiny应用实现自动化数据上传与定时更新?

自动化Excel处理与Shiny Flexdashboard更新方案

1. 编写核心自动化R脚本

创建位于Folder B的automation_script.R,包含数据读取、转换、导出及应用同步逻辑:

# 加载所需包(未安装则先执行:install.packages(c("readxl")))
library(readxl)

# 定义路径(替换为实际文件夹路径)
folder_a <- "/path/to/Folder_A"       # 原始Excel文件存放目录
folder_c <- "/path/to/Folder_C"       # Shiny应用的数据目录
dashboard_dir <- "/path/to/your_flexdashboard"  # 本地flexdashboard文件目录
shiny_server_dir <- "/srv/shiny-server/your_dashboard"  # Shiny服务器应用目录

# 1. 读取并处理Folder A中的所有Excel文件
excel_files <- list.files(folder_a, pattern = "\\.xlsx$|\\.xls$", full.names = TRUE)
processed_data <- list()

for (file in excel_files) {
  # 读取Excel(根据实际需求调整sheet、列名等)
  raw_df <- read_excel(file, sheet = 1)
  
  # --- 这里添加你的数据转换逻辑 ---
  # 示例:去除空行、重命名列
  processed_df <- raw_df[!apply(raw_df, 1, function(x) all(is.na(x))), ]
  names(processed_df) <- gsub(" ", "_", names(processed_df))
  
  processed_data[[tools::file_path_sans_ext(basename(file))]] <- processed_df
}

# 2. 导出处理后的数据到Folder C
save(processed_data, file = file.path(folder_c, "dashboard_data.RData"))

# 3. 同步flexdashboard文件到Shiny服务器(根据系统选择对应命令)
# Linux/macOS 使用rsync
system(paste0("rsync -avz ", dashboard_dir, "/ ", shiny_server_dir, "/"))

# Windows 使用robocopy(假设服务器目录已映射为Z盘)
# system(paste0('robocopy "', dashboard_dir, '" "Z:/srv/shiny-server/your_dashboard" /E /XO'))

2. 设置定时任务

Windows:任务计划程序

  • 打开「任务计划程序」,点击「创建基本任务」
  • 命名为Shiny Dashboard Data Update,触发器选择「每2小时」,设置起始时间
  • 操作选择「启动程序」,程序路径选Rscript.exe(通常在C:\Program Files\R\R-x.x.x\bin\x64\Rscript.exe)
  • 添加参数:"C:/path/to/Folder_B/automation_script.R",起始于设为Folder B的路径

Linux/macOS:Cron

  • 终端输入crontab -e,添加以下规则(每2小时运行一次,同时记录日志):
0 */2 * * * /usr/bin/Rscript /path/to/Folder_B/automation_script.R >> /path/to/update_log.log 2>&1
  • 保存退出后,cron会自动生效

3. Flexdashboard数据加载配置

在你的flexdashboard脚本中,确保加载Folder C的.RData文件:

---
title: "My Dashboard"
output: 
  flexdashboard::flex_dashboard:
    runtime: shiny
---

```{r setup, include=FALSE}
# 加载处理后的数据
load(file.path("data", "dashboard_data.RData"))  # 假设Folder C是应用内的data子目录
## 4. 额外注意事项
- 确保R环境已安装所有依赖包(`readxl`、`flexdashboard`等)
- Shiny Server需配置正确的应用目录权限,确保服务器能读取同步后的文件
- 日志文件(`update_log.log`)可用于排查定时任务执行失败的问题

内容的提问来源于stack exchange,提问作者Abdu Kikhia
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 14:37:42