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

InDesign脚本仅显示元数据首个作者,如何获取全部作者并弹窗展示?

解决Adobe脚本无法获取全部文档作者的问题

问题根源

你当前脚本仅能获取第一个作者,核心有两个错误:

  1. 错误使用了app.activeDocument.metadataPreferences——这是Adobe应用的元数据偏好设置,并非当前文档的实际XMP元数据;
  2. 误将xmp.author当成多作者拼接字符串,但该属性仅返回第一个作者条目,文档的多作者实际存储为XMP标准的dc:creator数组。

修正后的脚本

// 加载XMP Toolkit库
ExternalObject.TI = ExternalObject.TI || {};
ExternalObject.TI["AdobeXMPScript"] = "XMPScript";

// 获取当前文档的原始XMP元数据并初始化XMPMeta对象
var xmpRawData = app.activeDocument.xmpMetadata.rawData;
var xmp = new XMPMeta(xmpRawData);

// 获取文档标题(DC命名空间下的title属性,为交替文本数组)
var docTitle = xmp.getProperty(XMPConst.NS_DC, "title", XMPConst.PROP_ARRAY_ALT_TEXT);
// 处理标题为数组的情况,取第一个有效条目
if (Array.isArray(docTitle)) {
    docTitle = docTitle.length > 0 ? docTitle[0] : "无标题";
}

// 获取全部作者(DC命名空间下的creator属性,为有序数组)
var creators = xmp.getProperty(XMPConst.NS_DC, "creator", XMPConst.PROP_ARRAY_ORDERED);
// 处理无作者的情况
if (!creators || creators.length === 0) {
    creators = ["无作者信息"];
}

// 构建弹窗消息内容
var message = "文档标题: " + docTitle + "\n作者列表:\n";
for (var i = 0; i < creators.length; i++) {
    message += "- " + creators[i] + "\n";
}

// 弹窗展示结果
alert(message);

关键修改说明

  • 改用app.activeDocument.xmpMetadata获取文档自身的XMP数据,替代原有的应用偏好设置;
  • 通过XMPMeta对象的getProperty方法,直接读取DC命名空间下的creator数组,无需手动分割字符串;
  • 增加了空值处理逻辑,避免无作者/标题时出现脚本错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:35:19