0

所以到目前为止我编写了这段代码,它工作得很好,唯一的问题是,两次调用代码导致错误«脚本»不理解 Remi 消息。(-1708)

这里有什么要指出的,我如何在触发后取消设置处理程序?

编码:

my Remi()

on Remi()
    set cD to (current date)

    tell application "Reminders"
        --set output to name of reminders
        if (count of (reminders whose completed is false)) > 0 then
            set output to ""
            set todoList to name of reminders whose completed is false
            repeat with itemNum from 1 to ((count of (reminders whose completed is false)))
                try
                    set Remi to item itemNum of reminders
                    set remiT to due date of Remi
                    set tim to time string of remiT
                    set dD to date string of remiT
                    set nN to name of Remi
                    if remiT ≤ cD then
                        set val to (tim & " - " & nN & " $$" & dD & "/ENDE")
                        set output to (output & val & return)
                    end if
                end try
            end repeat
        else
            set output to "No reminders available"
        end if
    end tell
    return output
end Remi

谢谢帮助

4

2 回答 2

1

我看到是什么导致了问题。您在“Remi()”处理程序中有一个变量“Remi”。我想你不能这样做!因此,要么更改变量的名称,要么更改处理程序的名称,你应该会很好。

于 2012-11-05T22:56:13.287 回答
0

问题是由将全局变量的值从处理程序更改为任何“提醒项数”结果的set Remi to item itemNum of reminders语句引起的。remi第二次,当您要求 AppleScript 调用 Remi 处理程序时,它不再是处理程序,因此调用失败。

您可以更改代码以不更改全局Remi变量,或者您可以Remi使用语句在处理程序中声明本地local Remi。这可以保护全球版本的 Remi 不被更改。

于 2012-11-06T17:15:09.703 回答