Mac OS X 10.7 を対象とするサンドボックス アプリがあり、次の AppleScript を実行したいと考えています。
tell application "Safari" to add reading list item "http://www.apple.com"
このスクリプトを AppleScript エディタでテストしたところ、正しく実行されました。
Cocoa アプリで、適切な一時資格をセットアップし、適切に実行される次のスクリプトでテストしました。
tell application "Safari" to activate
しかし、Cocoa アプリに最初のスクリプトを挿入すると、エラーが発生します。これが私が使用しているコードです
NSString *url = [post.url absoluteString];
NSString *source = [NSString stringWithFormat:@"tell application \"Safari\" to add reading list item \"%@\"", url];
NSDictionary *errorDictionary;
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:source];
if ( ![script executeAndReturnError:&errorDictionary] ) {
NSLog(@"Error while saving to Safari Reading List: %@", errorDictionary);
}
エラーは
2012-09-20 10:30:29.370 Cream[2752:303] Error while saving to Safari Reading List: {
NSAppleScriptErrorBriefMessage = "A identifier can\U2019t go after this identifier.";
NSAppleScriptErrorMessage = "A identifier can\U2019t go after this identifier.";
NSAppleScriptErrorNumber = "-2740";
NSAppleScriptErrorRange = "NSRange: {29, 11}";
}
エラーは「読み取り」という用語を参照しているようです。まるで Safari スクリプト辞書をロードしていないかのようで、「読み取りリスト項目」の意味を理解していません。
サンドボックスを無効にしてアプリを実行すると、まったく同じスクリプトで完全に動作します。
何が起こっているのか知っている人はいますか?サンドボックスのどこかに別の穴を開ける必要がありますか?