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

如何通过脚本检查文档Physical file id,对比不匹配时告警

问题分析与脚本修正

你的脚本无论ID匹配与否都会触发告警,核心原因有两个:

  • String.match()返回的是数组类型,直接用==比较两个数组永远会得到false(数组是引用类型,只有引用同一对象时才相等)
  • 重复定义了find_original_document_ID函数,属于冗余代码

另外还有几个潜在问题:

  • getFiles的过滤逻辑不够严谨,可能误打开其他文件
  • 未处理ID提取失败的情况(比如文件没有OriginalDocumentID)

修正后的完整脚本

var srcDoc = app.activeDocument;
var ctpath = srcDoc.path;
var ctname = srcDoc.name;

// 提取OriginalDocumentID的函数(只定义一次)
function find_original_document_ID(str) {
  // 精准提取xmpMM:OriginalDocumentID的引号内值
  var regEx = /xmpMM:OriginalDocumentID\s*=\s*"([^"]+)"/i;
  var result = str.match(regEx);
  
  // 返回匹配到的ID字符串,没找到则返回null
  return result ? result[1] : null;
}

// 提取当前文档的ID
var idCT = find_original_document_ID(srcDoc.xmpMetadata.rawData);
if (!idCT) {
  alert(ctname + " 未找到OriginalDocumentID!");
  app.exit();
}

// 查找并打开目标_01文件(可根据实际命名调整匹配规则)
var targetFiles = Folder(ctpath).getFiles(function(v) {
  return v.name.includes('_bustfront1') && v instanceof File;
});

if (targetFiles.length === 0) {
  alert("未找到目标_01文件!");
  app.exit();
}

// 打开第一个匹配的文件
var doc2 = open(targetFiles[0]);
var fName = doc2.name;
var id01 = find_original_document_ID(doc2.xmpMetadata.rawData);
doc2.close(SaveOptions.DONOTSAVECHANGES);

if (!id01) {
  alert(fName + " 未找到OriginalDocumentID!");
  app.exit();
}

// 字符串直接比较,不匹配则触发告警
if (idCT !== id01) {
  alert(
    ctname + " 的OriginalDocumentID:\n" + idCT + 
    "\n\n" + fName + " 的OriginalDocumentID:\n" + id01 + 
    "\n\n⚠️ ID不匹配,请检查文件来源!"
  );
}

关键修正点说明

  1. 正则表达式优化:
    原正则匹配整行,现在改为精准提取xmpMM:OriginalDocumentID的引号内值,避免多余字符干扰比较。
  2. 数组转字符串:
    函数返回匹配到的ID字符串(result[1]),而非match()返回的数组,确保可以用===直接比较。
  3. 严谨的文件查找:
    用includes()替代indexOf,同时判断是文件类型,避免匹配文件夹;添加文件未找到的判断逻辑。
  4. 空值处理:
    增加ID提取失败的告警,避免后续逻辑出错。
  5. 安全关闭文件:
    用SaveOptions.DONOTSAVECHANGES确保打开的对比文件不会被意外修改。

内容的提问来源于stack exchange,提问作者Tsunami Lâm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:25:19