Javascript macOS Error: Named parameters must be passed as an object

Javascript macOS Error: Named parameters must be passed as an object

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

如下:

// 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})

这个returns错误: Error: Error: Named parameters must be passed as an object.

当使用其他方法(如 show)时,说明符按预期工作:

示例:

// 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 上安装了 things3 并且您引用了脚本库时才能找到此文档。我已将文档添加为 PDF。所描述的错误也适用于 move 方法。不是解析日期,而是解析 List Object 到它,这将解决相同的错误。

Link 到文档 PDF → Link

Things 文档是错误的:scheduleApplication 的方法,而不是 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(),它会将 ToDo 说明符转换为 ID 字符串,然后让 schedule 方法将其转换回说明符。