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

求教:如何用AfterEffects脚本将图层信息写入Excel

After Effects脚本写入Excel的实现方法

方法一:跨平台通用(生成CSV文件,可直接用Excel打开)

这种方法不依赖Excel应用,生成的CSV文件能被Excel直接读取,适配Windows和Mac双平台。

  1. 收集图层信息
    遍历目标合成的图层,提取需要的属性(如名称、类型、持续时间等):
var comp = app.project.activeItem;
if (!(comp instanceof CompItem)) {
    alert("请先选中一个合成!");
    exit();
}

var layerData = [];
// 添加表头
layerData.push(["图层名称", "图层类型", "持续时间(秒)"]);

// 遍历图层收集数据
for (var i = 1; i <= comp.numLayers; i++) {
    var layer = comp.layer(i);
    var layerName = layer.name;
    var layerType = layer instanceof AVLayer ? "视频/音频层" : 
                    layer instanceof ShapeLayer ? "形状层" : 
                    layer instanceof TextLayer ? "文本层" : "其他类型";
    var duration = layer.outPoint - layer.inPoint;
    duration = duration.toFixed(2); // 保留两位小数
    
    layerData.push([layerName, layerType, duration]);
}
  1. 生成CSV格式字符串
    将收集到的数组转换为CSV格式,自动处理包含逗号或引号的内容:
function arrayToCSV(arr) {
    return arr.map(row => {
        return row.map(cell => {
            // 若单元格内容含逗号或引号,用双引号包裹并转义内部引号
            if (typeof cell === "string" && (cell.includes(",") || cell.includes('"'))) {
                return '"' + cell.replace(/"/g, '""') + '"';
            }
            return cell;
        }).join(",");
    }).join("\n");
}

var csvContent = arrayToCSV(layerData);
  1. 写入本地文件
    用AE原生File对象保存CSV文件到桌面:
var saveFile = new File(Folder.desktop + "/图层信息.csv");
saveFile.open("w", "TEXT", "UTF-8");
saveFile.write(csvContent);
saveFile.close();
alert("CSV文件已保存到桌面!");

方法二:Windows平台直接操控Excel(ActiveX)

Windows下可通过ActiveX直接调用Excel应用,实时写入数据到表格:

var comp = app.project.activeItem;
if (!(comp instanceof CompItem)) {
    alert("请先选中一个合成!");
    exit();
}

// 创建Excel实例
var excel = new ActiveXObject("Excel.Application");
excel.Visible = true; // 显示Excel窗口
var workbook = excel.Workbooks.Add();
var worksheet = workbook.Worksheets(1);

// 写入表头
worksheet.Cells(1, 1).Value = "图层名称";
worksheet.Cells(1, 2).Value = "图层类型";
worksheet.Cells(1, 3).Value = "持续时间(秒)";

// 写入图层数据
for (var i = 1; i <= comp.numLayers; i++) {
    var layer = comp.layer(i);
    var row = i + 1; // 从第二行开始写入数据
    worksheet.Cells(row, 1).Value = layer.name;
    worksheet.Cells(row, 2).Value = layer instanceof AVLayer ? "视频/音频层" : 
                                    layer instanceof ShapeLayer ? "形状层" : 
                                    layer instanceof TextLayer ? "文本层" : "其他类型";
    worksheet.Cells(row, 3).Value = (layer.outPoint - layer.inPoint).toFixed(2);
}

// 自动调整列宽
worksheet.Columns.AutoFit();
// 保存文件到桌面
var savePath = Folder.desktop + "/图层信息.xlsx";
workbook.SaveAs(savePath);
alert("Excel文件已保存到桌面!");

方法三:Mac平台操控Excel/Numbers(AppleScript)

Mac下可通过执行AppleScript来操控Excel或Numbers,实现数据导入:

var comp = app.project.activeItem;
if (!(comp instanceof CompItem)) {
    alert("请先选中一个合成!");
    exit();
}

// 收集图层数据并转成适合AppleScript的字符串格式
var dataStr = "图层名称,图层类型,持续时间(秒)\n";
for (var i = 1; i <= comp.numLayers; i++) {
    var layer = comp.layer(i);
    var layerName = layer.name.replace(/"/g, '\\"'); // 转义双引号避免脚本报错
    var layerType = layer instanceof AVLayer ? "视频/音频层" : 
                    layer instanceof ShapeLayer ? "形状层" : 
                    layer instanceof TextLayer ? "文本层" : "其他类型";
    var duration = (layer.outPoint - layer.inPoint).toFixed(2);
    
    dataStr += `"${layerName}",${layerType},${duration}\n`;
}

// 构造AppleScript代码,生成CSV并导入Numbers
var scriptStr = `
set csvData to "${dataStr}"
set savePath to (path to desktop as text) & "图层信息.csv"
set fileRef to open for access file savePath with write permission
write csvData to fileRef as «class utf8»
close access fileRef

tell application "Numbers"
    activate
    open file savePath
end tell
`;

// 执行AppleScript
app.doScript(scriptStr, ScriptLanguage.APPLESCRIPT_LANGUAGE);
alert("数据已导入Numbers!");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:43:28