#!/usr/bin/env python3 # -*- coding: utf-8 -*- """生成「Word 报告加工」测试流程:打开比价报告 -> 读全文 -> 查找替换 -> 追加加工说明 -> 插入截图 -> 复制副本 -> 弹窗""" import json import os DESK = "C:/Users/Administrator/Desktop" SRC = f"{DESK}/淘宝手机比价报告.docx" SHOT = f"{DESK}/RPA整理测试/整理完成截图.png" nodes = [] edges = [] def node(nid, comp, label, values, x=300, y=0, output=None, options=None): n = { "id": nid, "componentId": comp, "label": label, "values": values, "position": {"x": x, "y": y}, } if output: n["options"] = dict(options or {}, outputVar=output) elif options: n["options"] = options nodes.append(n) return nid def link(a, b): edges.append({"id": f"edge_{a}_{b}", "source": a, "target": b}) seq = [] node("node_start", "Trigger.Manual", "触发·立即执行", {"entryName": "立即执行"}, 240, 70, options={"timeoutMs": 30000}) seq.append("node_start") y = 160 nid = node("node_open", "Word_Open", "打开比价报告", {"filePath": SRC}, 300, y, output="wordDoc") seq.append(nid); y += 160 nid = node("node_read", "Word_ReadAll", "读取报告全文", {"objWord": "${wordDoc}"}, 300, y, output="docText") seq.append(nid); y += 160 nid = node("node_replace", "Word_Replace", "替换标注校验状态", {"objWord": "${wordDoc}", "oldText": "RPA 自动采集", "newText": "RPA 自动采集(已加工校验)"}, 300, y) seq.append(nid); y += 160 nid = node("node_enter", "Word_Enter", "文末空行", {"objWord": "${wordDoc}"}, 300, y) seq.append(nid); y += 160 nid = node("node_write", "Word_Write", "追加加工说明", {"objWord": "${wordDoc}", "text": "—— RPA 加工记录:本报告全文 ${len(docText)} 字,已由晨间自动化流程于今日读取校验,并在文末插入整理完成截图。"}, 300, y) seq.append(nid); y += 160 nid = node("node_pic", "Word_InsertPicture", "文末插入整理截图", {"objWord": "${wordDoc}", "imageaddr": SHOT}, 300, y) seq.append(nid); y += 160 nid = node("node_save", "Word_Save", "保存修改", {"objWord": "${wordDoc}"}, 300, y) seq.append(nid); y += 160 nid = node("node_copy", "File_Copy_V1", "复制生成加工版副本", {"file_type": "file", "file_path": SRC, "folder_path": DESK, "target_path": DESK, "rename": "1", "name": "淘宝手机比价报告_加工版.docx", "action": "覆盖"}, 300, y) seq.append(nid); y += 160 nid = node("node_close", "Word_Close", "关闭文档", {"objWord": "${wordDoc}", "isKill": "0"}, 300, y) seq.append(nid); y += 160 nid = node("node_notice", "Dialog_Notice_V2", "完成通知", {"text": "Word 报告加工完成:已替换标注、追加说明、插入截图,副本存桌面《淘宝手机比价报告_加工版.docx》", "title": "加工完成", "time_out": "10"}, 300, y) seq.append(nid) for i in range(len(seq) - 1): link(seq[i], seq[i + 1]) flow = {"id": "flow_word_report_process", "name": "Word 报告加工", "nodes": nodes, "edges": edges, "variables": []} out = os.path.join(os.environ["APPDATA"], "rpa-studio", "flows", "flow_word_report_process.json") with open(out, "w", encoding="utf-8") as f: json.dump(flow, f, ensure_ascii=False, indent=2) print("written:", out, f"nodes={len(nodes)} edges={len(edges)}")