3

Cocoa アプリケーションを作成しており、Scripting Bridge を使用してアプリケーションから Numbers スプレッドシートを生成したいと考えています。Numbers.h ファイルを生成し、Apple のドキュメントの指示に従って ScriptingBridge.framework をリンクしました。以下は、単純に Numbers ドキュメントを作成して保存するために使用しているコードです。

NSString *path = @"/Users/username/Desktop/Test.numbers";

NumbersApplication *numbers = [SBApplication applicationWithBundleIdentifier:@"com.apple.iWork.Numbers"];

[numbers activate];

NumbersDocument *document = [[[numbers classForScriptingClass:@"document"] alloc] initWithProperties:[NSDictionary dictionaryWithObjectsAndKeys:project.title, @"name", nil]];

[[numbers documents] addObject:document];

[document saveAs:nil in:[NSURL URLWithString:path]];

コードがコンパイルされて実行され、saveAs:in: メソッドを試すと、次のエラーが発生します。

-[SBProxyByClass saveAs:in:]: オブジェクトはまだコンテナに追加されていません。セレクタが認識されません [self = 0x2005912e0]

[numbers documents] 配列にドキュメントを追加する以外に何かしなければならないことはありますか?

私は AppleScript を使用しても構いませんが、できれば Scripting Bridge を使用したいと思っています。

4

2 に答える 2

1

ええと、SB を使った Numbers スクリプトです。1つの価格で2つの黒の芸術。問題を少し絞り込むために、最初に AppleScript で実行することをお勧めします。

AS でも壊れる場合は、コマンドの言い回しが間違っているか、Numbers に問題があります。ほとんどのアプリケーション スクリプターは AppleScript を使用しているため、彼らが認識できるコードを提示できれば、助けを得やすくなります。

動作する場合は、コマンドの ObjC への変換が正しくないか、SB に問題があります。AS で動作する例を用意することで、どこで問題が発生しているかを把握するための出発点が提供されます。

また、より信頼性が高く難読化されていない SB の代替手段を提供するobjc-appscriptを調べることもできます。その ASTranslate ツールを使用すると、動作中の AS コマンドを ObjC 構文に簡単に変換できます。

于 2010-06-11T20:42:37.393 に答える
0

Numbersは、Applescriptによるドキュメントの作成をまだサポートしていません。GUIスクリプトを使用する必要があります。Numbersの新しいバージョンは2011年1月6日にリリースされる予定であり、(願わくば)厳しく制限されたApplescriptサポートを修正する予定です。

于 2010-12-23T17:06:55.713 に答える