Automator中如何将剪贴板文本传入Run JavaScript动作的函数?
在Automator的Run JavaScript动作中传入剪贴板/选中文本到函数
我明白你的困扰——Automator的Run JavaScript动作确实没有像Run Bash那样的“pass input as arguments”选项,但我们有两种实用的方式来获取文本并传给你的sum_letters函数:
方法1:直接读取系统剪贴板内容
这种方式适合你想直接使用剪贴板里的文本的场景,通过Objective-C桥接调用系统剪贴板API:
function run() { // 访问系统通用剪贴板 const generalPasteboard = $.NSPasteboard.generalPasteboard; // 获取剪贴板中的纯文本内容 const clipboardText = generalPasteboard.stringForType($.NSPasteboardTypeString); // 调用你的sum_letters函数处理文本 const calculationResult = sum_letters(clipboardText); // 如果需要将结果传递给后续Automator动作,可以返回它 return calculationResult; } // 你的自定义函数 function sum_letters(text) { // 这里替换成你的实际逻辑,比如统计字母数量示例 if (!text) return 0; // 过滤非字母字符后返回长度 return text.replace(/[^a-zA-Z]/g, '').length; }
方法2:接收Automator工作流传入的选中文本
如果你的工作流开头已经添加了「获取所选文本」动作(或者其他能输出文本的动作),Run JavaScript的run函数会自动接收这些输入作为参数:
// input参数是Automator传入的文本数组(支持多段文本) function run(input) { // 取第一个传入的文本片段(如果是单段选中内容,这就是你要的) const selectedText = input[0]; // 调用sum_letters处理 const calculationResult = sum_letters(selectedText); return calculationResult; } function sum_letters(text) { // 你的自定义逻辑 if (!text) return 0; return text.replace(/[^a-zA-Z]/g, '').length; }
小提示
- 记得给
sum_letters函数添加空值判断,避免传入undefined或null时出错 - 如果需要在Automator里查看结果,可以在Run JavaScript动作后添加「显示结果」动作
内容的提问来源于stack exchange,提问作者S. A.
相关产品推荐
相关产品推荐

