首页 > 解决方案 > 注册来自 JXA 的 Javascript 回复

问题描述

再次返回 JavaScipt / JXA 问题。我正在尝试注册来自我使用 JXA 调用的应用程序的响应。我正在尝试注册值app.toDos.byId("HQebK1em72yZqc3WqTmyzx")。当我启动以下脚本时:

var TaskApp = Application('Things3')

var toDo = TaskApp.ToDo({
  name: "A new task",
  notes: "notes"
})

var newTask = TaskApp.toDos.push(toDo)

console.log("Task " + newTask)

我在回复字段中得到以下输出:

app = Application("Things")
    Application("Things").toDos.push(app.ToDo({"name":"A new task", "notes":"notes"}))
        --> app.toDos.byId("HQebK1em72yZqc3WqTmyzx")
    Application("Things").toDos.length
        --> 3502

/* Task 3502 */
Result:
undefined

这在编辑器中看起来像这样: 在此处输入图像描述

该值newTask似乎被.push返回数组长度的方法覆盖。我能否以某种方式注册或返回应用程序返回的新任务 ID?

标签: javascriptmacosjavascript-automation

解决方案


这是预期的:push是一个始终返回数组长度的 JavaScript 标准库方法。只需这样做:

var TaskApp = Application('Things3')

var toDo = TaskApp.ToDo({
  name: "A new task",
  notes: "notes"
})

TaskApp.toDos.push(toDo)

console.log("Task " + toDo.id())

推荐阅读