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

InDesign文件批量处理脚本问询:提取表格数据至电子表格

InDesign批量提取表格数据至电子表格的可行方案

完全可行,借助InDesign的脚本API(优先用JSX,兼容Windows/Mac)可以实现你需要的所有功能,以下是具体实现思路和简化示例:

核心实现步骤

  • 批量文件处理:支持两种模式,一是遍历指定文件夹下的所有InDesign文件(过滤.indd/.indt格式),二是处理当前已打开的所有文档。
  • 定位目标数据:通过页面索引获取第二页(app.activeDocument.pages[1],索引从0开始),定位页面内的表格(若页面仅有一个表格可直接取pages[1].tables[0]),然后提取表格的最后4行内容,对应weight/height/width/depth字段。
  • 导出数据:将文件名和提取到的四个字段按行写入CSV文件,CSV可直接导入Excel/Numbers等电子表格工具,也可通过脚本直接写入Excel(需依赖Office组件,复杂度稍高)。

简化JSX脚本示例

// 配置输出CSV路径,自行修改
var outputPath = "/Users/xxx/Desktop/shipping_data.csv";
// 可选:处理指定文件夹还是已打开文档,true=文件夹,false=已打开文档
var useFolder = true;
var targetFolder = Folder.selectDialog("选择要处理的文件夹");

// 初始化CSV内容,写入表头
var csvContent = "文件名,Weight,Height,Width,Depth\n";

// 处理单个文档的函数
function processDocument(doc) {
    try {
        // 获取第二页
        var secondPage = doc.pages[1];
        // 获取页面第一个表格(若有多个表格,需根据实际情况调整定位逻辑)
        var targetTable = secondPage.tables[0];
        // 取最后4行
        var startRow = targetTable.rows.length - 4;
        var weight = targetTable.rows[startRow].cells[0].contents;
        var height = targetTable.rows[startRow+1].cells[0].contents;
        var width = targetTable.rows[startRow+2].cells[0].contents;
        var depth = targetTable.rows[startRow+3].cells[0].contents;
        
        // 写入CSV行,注意转义逗号
        var fileName = doc.name.replace(",", "");
        csvContent += `${fileName},${weight},${height},${width},${depth}\n`;
        doc.close(SaveOptions.NO); // 不需要保存原文档则用NO,需要则用YES
    } catch(e) {
        // 错误捕获,跳过异常文档,可添加日志记录
        csvContent += `${doc.name},处理失败,${e.message}\n`;
        doc.close(SaveOptions.NO);
    }
}

// 批量处理逻辑
if (useFolder && targetFolder) {
    var files = targetFolder.getFiles("*.indd");
    for (var i=0; i<files.length; i++) {
        var doc = app.open(files[i]);
        processDocument(doc);
    }
} else {
    // 处理已打开的文档
    for (var j=0; j<app.documents.length; j++) {
        processDocument(app.documents[j]);
    }
}

// 写入CSV文件
var outputFile = File(outputPath);
outputFile.open("w");
outputFile.write(csvContent);
outputFile.close();
alert("数据提取完成,文件已保存至:" + outputPath);

注意事项

  • 确保所有规格表的表格结构完全一致,若存在表格数量、行数差异,需调整脚本中的表格定位和行索引逻辑。
  • 处理大量文件时,建议添加进度提示或日志记录,方便排查异常。
  • 脚本运行前备份原文档,避免意外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:28:20