首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScriptMacOS错误:命名参数必须作为对象传递

JavaScriptMacOS错误:命名参数必须作为对象传递
EN

Stack Overflow用户
提问于 2021-09-10 10:04:36
回答 1查看 99关注 0票数 1

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

详情如下:

代码语言:javascript
复制
// 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按预期工作:

例子:

代码语言:javascript
复制
// 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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-10 16:18:38

文档是错误的:scheduleApplication的方法,而不是ToDo的方法,这就是为什么它要求一个todo说明符(如果它已经是Todo对象的属性,它就不需要那个说明符了)。因此,工作守则是:

代码语言:javascript
复制
// 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字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69130591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档