Automagically Update TaskPaper Start Dates
Published 25 days ago • 1 min read
Change all the TaskPaper `@start(currentDate)` tags to `@today`.
Since I've been experimenting with using TaskPaper again instead of Things,
I've starting scripting TaskPaper a bit. Here's a fun little script that will
update @start(..)
tags that match the current date by removing the start date
and adding @today
. Combine this script with an app like EventScripts to
run each time TaskPaper is activated to always keep your @start
tags up to
date!
var TaskPaper = Application("TaskPaper");
TaskPaper.includeStandardAdditions = true;
var todayAttr = "data-today";
var app = Application.currentApplication();
app.includeStandardAdditions = true;
var dateToday = app.doShellScript("date +%F");
function TPContextGetCurrentPath(editor, options) {
editor.outline.groupUndoAndChanges(function () {
editor.outline.items.forEach((item) => {
const startDate = item.getAttribute("data-start");
if (startDate === options.dateToday) {
item.removeAttribute("data-start");
item.setAttribute("data-today", "");
}
});
});
}
var path = TaskPaper.documents[0].evaluate({
script: TPContextGetCurrentPath.toString(),
withOptions: {
dateToday,
},
});