--- title: "taskscheduleR" author: "Jan Wijffels" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{taskscheduleR} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(comment = "#>", collapse = TRUE) ``` ![taskscheduleR](taskscheduleR-logo.png) Schedule R scripts/processes with the Windows task scheduler. This allows R users working on Windows to automate R processes on specific timepoints from R itself. Basic usage ----------- The package allows to * Get the list of scheduled tasks * Remove a task * Add a task + A task is basically a script with R code which is run through Rscript + You can schedule tasks 'ONCE', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTE', 'ONLOGON', 'ONIDLE' + The task log contains the stdout & stderr of the Rscript which was run on that timepoint. This log can be found at the same folder as the R script Example usage: ```{r, include = FALSE} knitr::opts_chunk$set(comment = "#>", collapse = TRUE, eval = FALSE) ``` ```{r} library(taskscheduleR) myscript <- system.file("extdata", "helloworld.R", package = "taskscheduleR") ## run script once within 62 seconds taskscheduler_create(taskname = "myfancyscript", rscript = myscript, schedule = "ONCE", starttime = format(Sys.time() + 62, "%H:%M")) ## Run every day at the same time on 09:10, starting from tomorrow on ## Mark: change the format of startdate to your locale if needed (e.g. US: %m/%d/%Y) taskscheduler_create(taskname = "myfancyscriptdaily", rscript = myscript, schedule = "DAILY", starttime = "09:10", startdate = format(Sys.Date()+1, "%d/%m/%Y")) ## Run every week on Saturday and Sunday at 09:10 taskscheduler_create(taskname = "myfancyscript_sunsat", rscript = myscript, schedule = "WEEKLY", starttime = "09:10", days = c('SUN', 'SAT')) ## Run every 5 minutes, starting from 10:40 taskscheduler_create(taskname = "myfancyscript_5min", rscript = myscript, schedule = "MINUTE", starttime = "10:40", modifier = 5) ## Run every minute, giving some command line arguments taskscheduler_create(taskname = "myfancyscript_withargs_a", rscript = myscript, schedule = "MINUTE", rscript_args = "productxyz 20160101") taskscheduler_create(taskname = "myfancyscript_withargs_b", rscript = myscript, schedule = "MINUTE", rscript_args = c("productabc", "20150101")) ## get a data.frame of all tasks tasks <- taskscheduler_ls() str(tasks) ## delete the tasks taskscheduler_delete(taskname = "myfancyscript") taskscheduler_delete(taskname = "myfancyscriptdaily") taskscheduler_delete(taskname = "myfancyscript_sunsat") taskscheduler_delete(taskname = "myfancyscript_5min") taskscheduler_delete(taskname = "myfancyscript_withargs_a") taskscheduler_delete(taskname = "myfancyscript_withargs_b") ``` When the task has run, you can look at the log which contains everything from stdout and stderr. The log file is located at the directory where the R script is located. ```{r} ## log file is at the place where the helloworld.R script was located system.file("extdata", "helloworld.log", package = "taskscheduleR") ``` RStudio addin ----------- If you work with RStudio as editor, you can also just use the RStudio addin. In recent versions of RStudio (0.99.893 or later), select Addins and next select 'Schedule R scripts on Windows'. This will allow you to select a script to be scheduled at your specified timepoints. The script will be copied to the Rscript repo folder and will be launched from there each time. ![taskscheduleR](taskscheduleR-rstudioaddin.png)