我试图使用JXA(MacOS自动化的Javascript)在MacOS上实现任务管理器Things 3的自动化,并且运行它时出现了一个奇怪的错误。我花了无数个小时试图自己解决这个问题,并在其他人的帮助下。我试图使用文档中描述的以下方法:

详情如下:
// Set TaskApp as the app to use
var TaskApp = Application('Things3');
// Get the ToDo from toDos
var task = TaskApp.toDos["test555342343"]
// Get today as a date
var today = new Date()
// Schedule the task for Today
task.schedule(task.id(), {for: today})这将返回错误:Error: Error: Named parameters must be passed as an object.
当使用另一种方法(如show)时,SPECEPHER按预期工作:

例子:
// Set TaskApp as the app to use
var TaskApp = Application('Things3');
// Get the ToDo from toDos
var task = TaskApp.toDos["test555342343"]
// Bring Things3 to the Forground
TaskApp.activate()
// Show the task
task.show(task.id())将显示选定的待办事项。创建一个期限设置为date对象的任务也会产生正确的结果(最后期限为date的任务)。
只有在MacOS上安装了Things 3并且引用了脚本库时,才能找到这些文档。我添加了PDF格式的文档。所描述的错误也适用于move方法。与其解析日期,不如将List Object解析为List Object,这将在相同的错误中解决。
链接到文档PDF→Link
发布于 2021-09-10 16:18:38
文档是错误的:schedule是Application的方法,而不是ToDo的方法,这就是为什么它要求一个todo说明符(如果它已经是Todo对象的属性,它就不需要那个说明符了)。因此,工作守则是:
// Set TaskApp as the app to use
var TaskApp = Application('Things3')
// Get the ToDo from toDos
var task = TaskApp.toDos["test555342343"]
// Get today as a date
var today = new Date()
// Schedule the task for Today
TaskApp.schedule(task, {for: today})请注意,task已经是TODO说明符;您不需要通过task.id()绕道,它在允许schedule方法将其转换回说明符之前将Todo说明符转换为ID字符串。
https://stackoverflow.com/questions/69130591
复制相似问题