Tyme ist vollständig per AppleScript (oder JavaScript) programmierbar. Um die von Tyme unterstützten AppleScript-Befehle anzuzeigen, starte den AppleScript Editor und ziehe dann Tyme.app auf das Dock-Symbol des Editors. Die folgenden Beispiele zeigen, wie du Projekte, Aufgaben und Zeitangaben anlegen kannst:
// starting a timer
StartTrackerForTaskID "B98A6E...221CC252"
// listing active task ids
trackedTaskIDs
// stopping a timer
StopTrackerForTaskID "B98A6E6E...5221CC252"
// creating a project
make new project with properties {
name:"A",
defaultHourlyRate:120.0,
dueDate:(current date),
plannedBudget:1000.0,
plannedDuration:60.0
}
// searching for a project
set p to the first item of (every project whose name = "A")
name of p
// creating a task
make new task with properties {
name:"B",
taskType:"timed",
dueDate:(current date),
timedRoundingMinutes:30,
timedHourlyRate:75.0
} at the end of tasks of p
// searching for a task
set t to the first item of (every task of every project whose name = "B")
name of t
// creating a new time record
make new taskRecord with properties {
recordType:"timed",
timeStart:today - 60 * 18,
note:"Hello World!"
} at the end of taskRecords of t
set r to the first item of taskRecords of t
note of r
// creating a new mileage record
make new task with properties {
name:"C",
taskType:"mileage",
mileageKilometerRate:0.4
} at the end of tasks of p
set m to the first item of (every task of every project whose name = "C")
name of m
// creating fixed costs
make new task with properties {
name:"D",
taskType:"fixed",
fixedRate:4.99,
fixedQuantity:3
} at the end of tasks of p
set f to the first item of (every task of every project whose name = "D")
name of f
Schreibe deinen eigenen Exporter mit dem 'get task records' Befehl:
GetTaskRecordIDs
startDate ((current date) - 36000)
endDate (current date)
categoryID "B98A6E6E..001F35221CC252"
with onlyBillable
set fetchedRecords to fetchedTaskRecordIDs as list
// loop through all fetched records
repeat with recordID in fetchedRecords
GetRecordWithID recordID
timedDuration of lastFetchedTaskRecord
... // write the record anywhere
end repeat
Tyme hat auch ein paar Skript-Hooks. Beispielsweise kannst du ein AppleScript auslösen, wenn eine neuer Zeiteintrag erstellt wird oder ein Timer gestartet oder gestoppt wird. Du kannst beispielsweise einen ToDo als erledigt in ToDoIst oder Omnifocus markieren oder einen Alfred Workflow schreiben, um andere Dinge in Tyme zu automatisieren. Das Schreiben eigener Skripte, die auf diese Ereignisse reagieren, ist einfach, erstelle einfach eine neue Skriptdatei namens tyme3_applescript_hooks.scpt" in diesem Ordner "~/Library/Application Scripts/com.tyme-app.Tyme3-macOS/" (wenn sie nicht vorhanden ist, erstelle diesen).
Du musst dafür die folgenden Methoden implementieren:
on timerStartedForTaskRecord(tskRecordID)
tell application "Tyme"
GetRecordWithID tskRecordID
set tskID to relatedTaskID of lastFetchedTaskRecord
set tsk to the first item of (every task of every project whose id = tskID)
set tskName to name of tsk
say tskName
end tell
end timerStartedForTaskRecord
on timerStoppedForTaskRecord(tskRecordID)
tell application "Tyme"
GetRecordWithID tskRecordID
if recordType of lastFetchedTaskRecord is equal to "timed" then
set d to timedDuration of lastFetchedTaskRecord
say d
end if
end tell
end timerStoppedForTaskRecord
on timeoutDetectedForTaskRecord(tskRecordID)
tell application "Tyme"
GetRecordWithID tskRecordID
set tskID to relatedTaskID of lastFetchedTaskRecord
set tsk to the first item of (every task of every project whose id = tskID)
set tskName to name of tsk
say tskName
end tell
end timeoutDetectedForTaskRecord
on projectCompletedChanged(projectID)
tell application "Tyme"
set prj to the first item of (every project whose id = projectID)
set prjName to name of prj
say prjName
end tell
end projectCompletedChanged
on taskCompletedChanged(tskID)
tell application "Tyme"
set tsk to the first item of (every task of every project whose id = tskID)
set tskName to name of tsk
say tskName
end tell
end taskCompletedChanged
Es gibt einige Open-Source-Integrationen mit anderen Anwendungen zu Tyme auf Github. Ein guter Ort, um sich inspirieren zu lassen:
Tyme 2 + Fantastical + Omnifocus
Tyme 2 + Slack Standup Notes
Tyme 2 + Alfred 3 Workflow