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

iMac 10.14.6环境下Automator工作流优化方案咨询

优化Automator热文件夹工作流方案

核心思路

去掉TextEdit和频繁启动退出Safari的环节,通过Shell命令提取URL + JS自动化工具完成页面复选框勾选,同时支持并行处理独立的URL任务。


方案1:用Shell提取URL + JXA控制Safari(减少启动退出)

适合不想额外安装工具的场景,利用macOS自带的JXA(JavaScript for Automation):

步骤1:修改Automator工作流

  1. 打开原Automator热文件夹工作流,删除TextEdit相关步骤。
  2. 添加**「运行Shell脚本」动作,设置Shell为/bin/bash,传递输入为「作为自变量」**,脚本内容:
    # 提取文本文档内的URL(假设文件仅含单个URL或每行一个URL)
    URL=$(cat "$1")
    echo "$URL"
    
  3. 添加**「运行JavaScript」**动作,接收上一步输出的URL,用JXA控制Safari(仅启动一次,避免频繁重启):
    function run(input, parameters) {
        const targetUrl = input[0];
        const safari = Application('Safari');
        safari.includeStandardAdditions = true;
        
        // 检查Safari是否已运行,未运行则启动(仅执行一次)
        if (!safari.running()) {
            safari.launch();
            delay(1); // 给Safari预留启动时间
        }
        
        // 在Safari新建标签页打开目标URL
        const newTab = safari.Tab().make({at: safari.windows[0].tabs.end()});
        newTab.url = targetUrl;
        delay(2); // 等待页面加载,可根据目标网站速度调整
        
        // 执行勾选复选框的脚本,替换为目标页面实际的选择器
        newTab.doJavaScript(`
            // 示例1:勾选所有复选框
            document.querySelectorAll('input[type="checkbox"]').forEach(cb => cb.checked = true);
            // 示例2:勾选指定ID的复选框
            // document.getElementById('your-checkbox-id').checked = true;
        `);
        
        // 可选:处理完成后关闭标签页
        // newTab.close();
        
        return targetUrl;
    }
    

优势

  • 依赖系统自带工具,无需额外安装
  • Safari仅启动一次,避免频繁启停的资源消耗
  • 支持并行处理多个URL(通过多标签页实现)

方案2:用Node.js + Puppeteer(完全脱离Safari/TextEdit)

适合希望完全静默处理、不依赖Safari的场景,需安装Node.js:

步骤1:安装依赖

  1. 下载兼容macOS 10.14.6的Node.js版本(推荐14.x或16.x)并安装,打开终端执行:
    npm install puppeteer@19.11.1 # 该版本适配旧系统环境
    

步骤2:编写处理脚本(命名为process-url.js)

const fs = require('fs');
const puppeteer = require('puppeteer');

// 读取传入的文件路径,提取URL
const filePath = process.argv[2];
const targetUrl = fs.readFileSync(filePath, 'utf8').trim();

(async () => {
    // 启动无头Chrome(后台静默运行,无窗口)
    const browser = await puppeteer.launch({
        headless: true,
        args: ['--no-sandbox'] // 旧系统可能需要此参数
    });
    const page = await browser.newPage();
    
    try {
        // 加载目标页面,等待网络空闲再执行操作
        await page.goto(targetUrl, {waitUntil: 'networkidle2'});
        
        // 执行复选框勾选逻辑,替换为目标页面的实际选择器
        await page.evaluate(() => {
            // 示例:勾选指定类名的复选框
            // document.querySelectorAll('.target-checkbox').forEach(cb => cb.checked = true);
            
            // 示例:勾选所有复选框
            document.querySelectorAll('input[type="checkbox"]').forEach(cb => cb.checked = true);
        });
        
        // 可选:预留时间确保操作完成
        await page.waitForTimeout(1000);
    } catch (err) {
        console.error('处理出错:', err);
    } finally {
        await browser.close();
    }
})();

步骤3:修改Automator工作流

  1. 删除原TextEdit和Safari步骤,添加**「运行Shell脚本」动作,传递输入为「作为自变量」**,脚本内容:
    # 替换为你的Node.js路径和脚本存储路径
    /usr/local/bin/node /Users/你的用户名/脚本存储路径/process-url.js "$1"
    
    (可通过which node命令获取Node.js的安装路径)

优势

  • 完全脱离Safari和TextEdit,后台静默处理
  • 支持并行处理多个任务(只要系统资源足够)
  • 对页面操作的控制更灵活

关键注意事项

  • 页面加载时间:根据目标网站的加载速度,调整delay()或waitUntil参数,避免操作时页面未完全加载
  • 复选框选择器:需替换为目标页面的实际CSS选择器(可在浏览器开发者工具中右键复选框→「复制→CSS选择器」获取)
  • 并行处理:方案1可通过自动关闭标签页提升并发能力;方案2可同时处理多个文件,不受浏览器标签页限制

内容的提问来源于stack exchange,提问作者RunDontStop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:54:16