2

在 OSX Yosemite 中,我使用新的 JavaScript for Automation 功能来编写日历脚本。我正在尝试搜索日历以查看当前是否正在发生事件。

我在 AppleScript 中这样做了:

set now to current date
every event whose start date < now and end date > now

我注意到在 AppleScript 中有一个专门的 AppleScript 'date' 对象。事件日志显示如下。特别注意字符串前的“日期”修饰符,表示这是一个日期对象而不仅仅是一个字符串。

count every event whose start date < date "Monday, August 11, 2014 at 5:49:46 PM" and end date > date "Monday, August 11, 2014 at 5:49:46 PM" and allday event = false

我试图在 AppleScript 中这样做:

workCalendar.events.whose({
    _and: [
        { startDate: {'<': now} },
        { endDate: {'>': now} }
    ]
 });

但是我为 now var 设置的任何值都会给我以下错误:

Error -1700: Can't convert types.

我现在尝试了以下值和所有返回类型转换错误:

calendarApp.includeStandardAdditions = true;
now = calendarApp.currentDate;

now = (new Date());

now = (new Date()).toISOString();

now = $.NSDate.date;

试着找出我这样做的价值类型:

firstStartDate = workCalendar.events[0].startDate();

console.log("firstStartDate : " + firstStartDate);
console.log("firstStartDate TO : " + (typeof firstStartDate));
console.log("firstStartDate OS : " + ObjectSpecifier.classOf(firstStartDate));

这导致在事件日志中:

/* firstStartDate : Wed Jun 18 2014 10:30:00 GMT-0700 (PDT) */
/* firstStartDate TO : object */
/* firstStartDate OS : undefined */
4

1 回答 1

0

Apple 承认这是一个错误 - 从 Yosemite Public Beta 3 开始,这有效:

now = (new Date());

这有效

firstStartDate = workCalendar.events[0].startDate();

这有效

    var currentApp = Application.currentApplication();
    currentApp.includeStandardAdditions = true;
    now = currentApp.currentDate();
于 2014-09-18T18:44:36.287 回答