Data Transfer API
Lets a script attach a Data Transfer to the scheduler, detach it, and read its schedule status. A data transfer copies one variable’s value into another, optionally computing a statistic from logged history first — it does not write files.
Scheduling and cancelling require the SCHEDULE_DATA_TRANSFER permission, and both are recorded in the audit log as operator actions.
ins.scheduleDataTransfer(name) / (projectName, name)
Section titled “ins.scheduleDataTransfer(name) / (projectName, name)”Attaches the transfer to the scheduler; it then runs at the period in its definition. projectName defaults to the calling project.
ins.scheduleDataTransfer("hourly_energy_calc");ins.scheduleDataTransfer("other_project", "hourly_energy_calc");The project must be active — scheduling a transfer in a passive project is refused.
ins.cancelDataTransfer(name) / (projectName, name)
Section titled “ins.cancelDataTransfer(name) / (projectName, name)”Detaches the transfer: remaining triggers are cancelled, and a run already in progress finishes.
ins.cancelDataTransfer("hourly_energy_calc");ins.getDataTransferStatus(name) / (projectName, name)
Section titled “ins.getDataTransferStatus(name) / (projectName, name)”Returns one of two strings:
| Value | Meaning |
|---|---|
"Scheduled" | Attached to the scheduler |
"Not Scheduled" | Not attached |
if (ins.getDataTransferStatus("hourly_energy_calc") === "Not Scheduled") { ins.scheduleDataTransfer("hourly_energy_calc");}ins.getDataTransferStatuses(names) / (projectName, names)
Section titled “ins.getDataTransferStatuses(names) / (projectName, names)”Statuses of the named transfers, keyed by the requested name. Every distinct requested name gets an entry, in request order; a name that does not resolve carries the "Not Scheduled" default rather than being dropped.
var statuses = ins.getDataTransferStatuses(["hourly_energy_calc", "daily_avg_temp"]);ins.getDataTransferStatusesByProject() / (projectName)
Section titled “ins.getDataTransferStatusesByProject() / (projectName)”Statuses of every transfer of the project that the caller can see, keyed by name — space- and role-access filtered.
var all = ins.getDataTransferStatusesByProject();for (var name in all) { if (all[name] === "Not Scheduled") ins.scheduleDataTransfer(name);}Example: make sure the rollups are running
Section titled “Example: make sure the rollups are running”function main() { var wanted = ["hourly_energy_calc", "daily_avg_temp"]; var statuses = ins.getDataTransferStatuses(wanted);
for (var i = 0; i < wanted.length; i++) { var name = wanted[i]; if (statuses[name] === "Not Scheduled") { ins.scheduleDataTransfer(name); ins.writeLog("info", "DataTransfer", name + " scheduled"); } }}main();