如何使用objective-c创建Numbers电子表格?

时间:2010-06-11 20:05:19

标签: objective-c applescript scripting-bridge apple-numbers

我正在编写Cocoa应用程序,我想使用Scripting Bridge从我的应用程序生成Numbers电子表格。我已经生成了Numbers.h文件,并按照Apple's Documentation中的指示链接了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] ​​

除了将文档添加到[数字文档]数组之外,我还需要做些什么吗?

我愿意使用AppleScript,但如果可以,我更愿意使用Scripting Bridge。

2 个答案:

答案 0 :(得分:1)

Ehh,用SB编写数字脚本;两个黑色艺术的价格之一。我建议首先尝试在AppleScript中进行,以便稍微缩小问题范围。

如果它也在AS中断,那么要么你错误地说了这些命令,要么在Numbers中有问题。由于大多数应用程序脚本使用AppleScript,如果您能够呈现他们将识别的代码,您会发现更容易获得帮助。

如果有效,那么将命令翻译成ObjC是不正确的,或者SB中存在问题。在AS中有一个工作示例将为找出出错的地方提供一个起点。

您还可以查看objc-appscript,它提供了一种更可靠,更少混淆的替代SB。它的ASTranslate工具可以很容易地将工作AS命令转换为ObjC语法。

答案 1 :(得分:0)

Numbers还不支持通过Applescript创建文档。您必须使用GUI脚本。新版本的Numbers应该会在2011年1月6日发布,并且(希望)将修复其严格限制的Applescript支持。