task_create: Schedule an R script with the Windows task scheduler.

View source: R/task_manager.R

task_createR Documentation

Schedule an R script with the Windows task scheduler.

Description

Schedule an R script with the Windows task scheduler. E.g. daily, weekly, once, at startup, ...

More information about the scheduling format can be found in the docs/schtasks.pdf file inside this package. The rscript file will be scheduled with Rscript.exe and the log of the run will be put in the .log file which can be found in the same directory as the location of the rscript.

Usage

task_create(
  rscript = quote(print(Sys.time())),
  taskname = NULL,
  workdir = "./task",
  schedule = c("ONCE", "MINUTE", "HOURLY", "DAILY", "WEEKLY", "MONTHLY", "ONLOGON",
    "ONIDLE"),
  starttime = format(Sys.time() + 61, "%H:%M"),
  startdate = format(Sys.Date(), "%Y/%m/%d"),
  days = c("*", "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN", 1:31),
  months = c("*", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT",
    "NOV", "DEC"),
  modifier,
  idletime = 60L,
  Rexe = file.path(Sys.getenv("R_HOME"), "bin", "Rscript.exe"),
  rscript_args = "",
  schtasks_extra = "",
  debug = FALSE
)

Arguments

rscript

filepath or quote() object. Should not contain any spaces.

taskname

a character string with the name of the task. Defaults to the filename. Should not contain any spaces.

workdir

working directory

schedule

when to schedule the rscript. Either one of 'ONCE', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTE', 'ONLOGON', 'ONIDLE'.

starttime

a timepoint in HH:mm format indicating when to run the script. Defaults to within 62 seconds.

startdate

a date that specifies the first date on which to run the task. Only applicable if schedule is of type 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTE'. Defaults to today in \%d/\%m/\%Y format. Change to your locale format if needed.

days

character string with days on which to run the script if schedule is 'WEEKLY' or 'MONTHLY'. Possible values are * (all days). For weekly: 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN' or a vector of these in your locale. For monthly: 1:31 or a vector of these.

months

character string with months on which to run the script if schedule is 'MONTHLY'. Possible values are * (all months) or 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC' or a vector of these in your locale.

modifier

integer, a modifier to apply. See the docs/schtasks.pdf

idletime

integer, containing a value that specifies the amount of idle time to wait before running a scheduled ONIDLE task. The valid range is 1 - 999 minutes.

Rexe

path to Rscript.exe which will be used to run the script. Defaults to Rscript at the bin folder of R_HOME.

rscript_args

character string with further arguments passed on to Rscript. See args in Rscript().

schtasks_extra

character string with further schtasks arguments. See the inst/docs/schtasks.pdf If you want to hide the cmd popuping windows, you need to pass /RU "username" /RP "passwd" to schtasks_extra.

debug

logical

Value

the system call to schtasks /Create

References

"taskscheduleR::taskscheduler_create".

Examples

myscript <- quote({
    print(Sys.time())
    print(getwd())
    print("hello world")
})

## Not run: 

## Run script once at a specific timepoint (within 62 seconds)
runon <- format(Sys.time() + 62, "%H:%M")
task_create(taskname = "myfancyscript", rscript = myscript, 
 schedule = "ONCE", starttime = runon)

## 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)
task_create(taskname = "myfancyscriptdaily", rscript = myscript, 
 schedule = "DAILY", starttime = "09:10", startdate = format(Sys.Date()+1, "%d/%m/%Y"))
 
## Run every week on Sunday at 09:10
task_create(taskname = "myfancyscript_sun", rscript = myscript, 
  schedule = "WEEKLY", starttime = "09:10", days = 'SUN')

## Run every 5 minutes, starting from 10:40
task_create(taskname = "myfancyscript_5min", rscript = myscript,
  schedule = "MINUTE", starttime = "10:40", modifier = 5)
  
## Run every minute, giving some command line arguments which can be used in the script itself
task_create(taskname = "myfancyscript_withargs_a", rscript = myscript,
  schedule = "MINUTE", rscript_args = "productxyz 20160101")
task_create(taskname = "myfancyscript_withargs_b", rscript = myscript,
  schedule = "MINUTE", rscript_args = c("productabc", "20150101"))
  
# alltasks <- task_ls()
# subset(alltasks, TaskName %in% c("myfancyscript", "myfancyscriptdaily"))
# The field TaskName might have been different on Windows with non-english language locale

task_delete(taskname = "myfancyscript")
task_delete(taskname = "myfancyscriptdaily")
task_delete(taskname = "myfancyscript_sun")
task_delete(taskname = "myfancyscript_5min")
task_delete(taskname = "myfancyscript_withargs_a")
task_delete(taskname = "myfancyscript_withargs_b")

## End(Not run)

rpkgs/curlR documentation built on Jan. 30, 2023, 7:26 p.m.