Macos 如何通过AppleScript从剪贴板复制所有信息
事情是这样的:Macos 如何通过AppleScript从剪贴板复制所有信息,macos,shell,applescript,automator,Macos,Shell,Applescript,Automator,事情是这样的: 我在Automator中使用AppleScript来获取剪贴板值,当然它是有效的,但是当我想要获取多个分隔值时,它总是只在顶部返回一个值。 以下是步骤: 在Automator中,导入多个“获取变量值”操作,然后 在这些操作中,我将设置多个值,所有这些值 是电子邮件格式吗 导入名为“请求确认”的操作,而不导入此操作, 我无法将多个值传递给下一个操作“从列表中选择”(I 不知道为什么,但它有效) 导入名为“从列表中选择”的操作以允许用户选择 我在此Automator应用程序中预先设置
我在Automator中使用AppleScript来获取剪贴板值,当然它是有效的,但是当我想要获取多个分隔值时,它总是只在顶部返回一个值。
以下是步骤:
复制到Clipbard
操作或AppleScript中的一个错误。自动机操作通常是用Objective-C编写的,它有一些AppleScript没有的数据类型。这看起来像是自动机操作将数组复制到剪贴板,这可以通过Objective-C实现,但不能通过AppleScript实现
我的感觉是AppleScript是这里的错误实体,因为该操作正在执行它的本意,并且在Automator上下文中,将剪贴板的数据保持为数组类型不会造成问题。AppleScript在实现剪贴板数据处理时可能没有满足这一要求,并且在将数组或列表强制转换为纯文本方面做得很差,正如您所述,纯文本只包含数组的第一个元素
解决:
1.使用do shell脚本
命令
而不是:
set Storage to get the clipboard
尝试:
2.使用AppleScriptObjC
由于自动机操作可能是用ObjC编写的,因此可以合理地假设使用AppleScriptObjC将使我们能够访问必要的数据类型
将整个AppleScript替换为以下内容:
use framework "Foundation"
use scripting additions
set Storage to (current application's NSPasteboard's generalPasteboard's ¬
stringForType:(current application's NSPasteboardTypeString)) ¬
as text
display alert Storage
on run {input, parameters}
set the text item delimiters to linefeed
set Storage to the input as text
display dialog Storage
end run
3.通过输入
变量访问数据
Automator中的运行AppleScript
操作获取上一个操作的结果,并将其存储在运行{input,parameters}处理程序时附加到的变量中,即输入
(您可以忽略参数
)
目前,您的工作流实际上将剪贴板的内容(复制到剪贴板操作的输出)直接发送到AppleScript的输入变量
因此,您可以使用以下内容替换整个AppleScript:
use framework "Foundation"
use scripting additions
set Storage to (current application's NSPasteboard's generalPasteboard's ¬
stringForType:(current application's NSPasteboardTypeString)) ¬
as text
display alert Storage
on run {input, parameters}
set the text item delimiters to linefeed
set Storage to the input as text
display dialog Storage
end run
这些解决方案中的任何一个都应该有效,因此只需选择您喜欢的方法即可Number#3可能在您当前的设置中最有意义,也是最简单的。显示您如何设置Get Value of Variable
以及他们如何选择它们。添加“Get Value of Variable”,然后将变量名称设置为“testforstackoverflowanswer”你好,朋友,我不得不说,你真的达到了目标,这就是我想要的,谢谢you@JasonWang:请单击此答案上方的复选标记(“接受”)。这表明答案解决了你的问题,并通过给予帮助你的人声誉来奖励他们。再次感谢,我点击了它