处理 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);
所以问题正式可以解决了!
我正在尝试 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);
所以问题正式可以解决了!