0

だから私はこれまでこのコードを書きました。それは非常にうまく機能します。唯一の問題は、コードを 2 回呼び出すとエラー «script» が 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

この問題は、グローバル変数の値をハンドラーから「リマインダーの項目 itemNum」が何set Remi to item itemNum of remindersであるかに変更するステートメントによって引き起こされます。remi2 回目に AppleScript に Remi ハンドラーを呼び出すように依頼すると、それはもはやハンドラーではないため、呼び出しは失敗します。

Remiグローバル変数を変更しないようにコードを変更するか、ステートメントRemiを使用してハンドラー内で localを宣言することができます。local Remiこれにより、Remi のグローバル バージョンが変更されないように保護されます。

于 2012-11-06T17:15:09.703 に答える