You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:52:36