InDesign脚本导出故事失败,报Error 45对象无效错误
解决InDesign脚本的对象无效与导出问题
1. 修复直接触发错误的拼写问题
你代码第79行的appliedParagraphyStyle是拼写错误,正确写法是appliedParagraphStyle——这是错误编号45(对象无效)的直接原因,拼写错误导致脚本找不到对应的属性,触发报错。
2. 避免空故事/无段落的对象访问错误
即使修复拼写,仍可能因为空故事(比如空文本框)触发对象无效,需要在判断前增加有效性检查:
// 修改后的判断逻辑 if(myStory.paragraphs.length > 0 && myStory.paragraphs[0].appliedParagraphStyle.name === "Headline"){ // 你的故事处理代码 }
同时,遍历故事时先过滤无效/空故事:
for(var i=0; i<app.activeDocument.stories.length; i++){ var myStory = app.activeDocument.stories[i]; // 跳过无效或空内容的故事 if(!myStory.isValid || myStory.contents.trim() === "") continue; // 再执行段落样式判断 if(myStory.paragraphs.length > 0 && myStory.paragraphs[0].appliedParagraphStyle.name === "Headline"){ // 选中、导出等逻辑 } }
3. 解决保存与导出失败问题
- 保存路径检查:确保脚本中指定的保存文件夹存在,若不存在可添加创建文件夹的代码,避免因路径无效导致保存失败。
- 导出前验证对象:执行导出操作前,确认当前选中的故事
myStory.isValid为true,避免导出无效对象。 - 日志Undefined问题:检查日志输出的变量是否提前定义并赋值,比如要打印的变量是否在输出前已经正确获取,避免输出未定义的内容。
4. 额外注意事项
- 确认文档中确实存在名为
Headline的段落样式,大小写、空格要完全匹配;也可以改用段落样式的ID或索引来判断,避免名称匹配的误差。 - 若脚本涉及跨文档操作,要确保目标文档处于激活状态,且对象引用正确。
内容的提问来源于stack exchange,提问作者Basilio Gonzalez
相关产品推荐
相关产品推荐

