iMac 10.14.6环境下Automator工作流优化方案咨询
优化Automator热文件夹工作流方案
核心思路
去掉TextEdit和频繁启动退出Safari的环节,通过Shell命令提取URL + JS自动化工具完成页面复选框勾选,同时支持并行处理独立的URL任务。
方案1:用Shell提取URL + JXA控制Safari(减少启动退出)
适合不想额外安装工具的场景,利用macOS自带的JXA(JavaScript for Automation):
步骤1:修改Automator工作流
- 打开原Automator热文件夹工作流,删除TextEdit相关步骤。
- 添加**「运行Shell脚本」动作,设置Shell为
/bin/bash,传递输入为「作为自变量」**,脚本内容:# 提取文本文档内的URL(假设文件仅含单个URL或每行一个URL) URL=$(cat "$1") echo "$URL" - 添加**「运行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:安装依赖
- 下载兼容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工作流
- 删除原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
相关产品推荐
相关产品推荐

