处理 UI 元素时出现 AppleScript 语法错误(摘要服务)

AppleScript Syntax error while working around UI elements (Summary Service)

我正在尝试 get/set 使用此代码从摘要服务应用程序获取值

tell application "SummaryService"
    activate
    delay 0.1
    get value of text area 1 of scroll area 1 of window "Summary" 
end tell

无论我做什么(获取或设置)我都会收到此错误 Error image

(!) 通常,我想找到一种以文本作为参数启动 Summary App 的方法(我想将这种可能性添加到我的 obj-c 应用程序中)。我用谷歌搜索了一段时间,得到的结果是 this one。尽管如此,它还是让所有的工作都在幕后进行,只为用户提供文本转换的结果,并让用户做一些不必要的工作,而我只想启动默认应用程序。 任何帮助将不胜感激!

System Events可以获取windows,滚动区域和文本区域,SummaryService不能。

tell application "SummaryService" to activate
delay 0.1
tell application "System Events"
    tell application process "SummaryService"
        get value of text area 1 of scroll area 1 of window "Summary"
    end tell
end tell

最后我没有按照我以前想要的方式解决我的问题,但是我发现 github 上有很多开源的 summerize 库,所以我使用 one

因为我想在我的 Objective-C 项目中使用用 Swift 编写的代码,所以只需要添加

#import <Reductio/Reductio-Swift.h>

到我想要实现所需功能的控制器并调用

[Reductio summarizeWithText:textToChange compression:compressionValue completion:^(NSArray<NSString *> * _Nonnull result) {}];

得到结果。

PS:我仍然对如何使用我选择的文本以编程方式打开 SummaryService 感兴趣。

PS 2:突然发现NSPerformService这样的函数,完全可以满足我的需求。所以我以这种方式实现了所有需要的功能:

NSString *stringToSetInPb = @"sample text";
NSPasteboard *pb = [NSPasteboard pasteboardWithUniqueName];
[pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
[pb setString:stringToSetInPb forType:NSStringPboardType];
NSPerformService(@"Summarize", pb);

所以问题正式可以解决了!