【问题标题】:Parsing command line arguments for osascript -l JavaScript解析 osascript -l JavaScript 的命令行参数
【发布时间】:2019-05-16 20:35:10
【问题描述】:

我正在寻找一种方法来获取使用 osascript 的 javascript 文件的命令行参数。

我尝试过引用适用于苹果脚本文件的 argv。 我试过引用系统,也试过引用这个。

文档似乎很简单……我尝试了多次搜索,但要么得到节点匹配,要么得到苹果脚本匹配。

这是我要传递参数的脚本。

#!/usr/bin/osascript

console.log(this)

for ( key in this ) {
    console.log(key)
}

var app = Application.currentApplication()
app.includeStandardAdditions = true
var Calendar = Application("Calendar")

var eventStart = app.currentDate()
eventStart = eventStart
eventStart.setDate(eventStart.getDate() + 1)
eventStart.setHours(15)
eventStart.setMinutes(0)
eventStart.setSeconds(0)
var eventEnd = new Date(eventStart.getTime())
eventEnd.setHours(16)

var projectCalendars = Calendar.calendars.whose({name: "csmu"})
var projectCalendar = projectCalendars[0]

var event = Calendar.Event({summary: "Important Meeting!", startDate: eventStart, endDate: eventEnd})
projectCalendar.events.push(event)
event

这是一个运行示例。

./create-event.js '{"calendar":"BD2T-AT"}'
[object GlobalObject]
eventEnd
eventStart
Calendar
event
app
projectCalendar
projectCalendars
Application("Calendar").calendars.whose({_match: [ObjectSpecifier().name, "csmu"]}).calendars.at(0).events.byId("3F6F91B0-06CD-4688-ADED-238BA40915DC")

你如何解析 osascript -l JavaScript 的命令行参数

【问题讨论】:

  • 您能演示一下您是如何使用 AppleScript 文件引用 argv 的吗?我不清楚你在这里的意思。另外,你的 JavaScript 中的哪些变量应该从命令行参数中获取它们的值?
  • 在运行 argv 时返回 "hello," & item 1 of argv & "."结束运行hints.macworld.com/article.php?story=20050523140439734
  • 啊,好的。所以它基本上是function run(argv) { ... }
  • 我猜的就是这个!

标签: javascript macos applescript


【解决方案1】:

我尝试创建一个运行函数。成功了!

示例脚本。

#!/usr/bin/osascript

function run(command_line_parameters){

    command_line_parameters = JSON.parse(command_line_parameters)

    calendar_name = command_line_parameters['calendar']

    summary = command_line_parameters['summary']

    starts = command_line_parameters['starts']
    start_date_time = starts.split(' ')
    start_date = start_date_time[0]
    start_time = start_date_time[1].split(':')

    ends = command_line_parameters['ends']
    end_date_time = ends.split(' ')
    end_date = end_date_time[0]
    end_time = end_date_time[1].split(':')

    var app = Application.currentApplication()
    app.includeStandardAdditions = true
    var Calendar = Application("Calendar")

    var eventStart = new Date(start_date)

    eventStart.setHours(start_time[0])
    eventStart.setMinutes(start_time[1])
    eventStart.setSeconds(0)

    var eventEnd = new Date(end_date)
    eventEnd.setHours(end_time[0])
    eventEnd.setMinutes(end_time[1])
    eventEnd.setSeconds(0)

    console.log(calendar_name,summary,starts,ends)

    var projectCalendars = Calendar.calendars.whose({name: calendar_name})
    var projectCalendar = projectCalendars[0]

    var event = Calendar.Event({summary: summary, startDate: eventStart, endDate: eventEnd})
    projectCalendar.events.push(event)
    event

}

示例运行。

./create-event.js '{"calendar":"BD2L-AT", "starts":"2018-12-16 09:00", "ends":"2018-12-16 13:43", "summary":"Created from command line"}'

它在 2018 年 12 月 16 日 09:00 到 13:43 在 BD2L-AT 日历中创建了一个事件。

【讨论】:

    猜你喜欢
    • 2013-03-21
    • 2012-01-26
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多