InDesign Script提取段落样式的故事
InDesign Script extract stories if paragraph style
正在与以下脚本作斗争。我修改了找到的一个脚本,使其将所有故事提取为txt文件,并将txt文件和段落中文本的文件名一起保存。
事实证明,我们不想提取所有的故事,但我们想要的故事的第一段有一个固定的段落风格。
我正在努力解决的部分是if语句的语法,该语句检查当前应用的段落样式是什么
感谢任何帮助,如果我的问题不清楚,很抱歉
main();
function main(){
//Make certain that user interaction (display of dialogs, etc.) is turned on.
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
if(app.documents.length != 0){
if (app.activeDocument.stories.length != 0){
myDisplayDialog();
}
else{
alert("The document does not contain any text. Please open a document containing text and try again.");
}
}
else{
alert("No documents are open. Please open a document and try again.");
}
}
function myDisplayDialog(){
with(myDialog = app.dialogs.add({name:"ExportAllStories"})){
//Add a dialog column.
myDialogColumn = dialogColumns.add()
with(myDialogColumn){
with(borderPanels.add()){
staticTexts.add({staticLabel:"Export as:"});
with(myExportFormatButtons = radiobuttonGroups.add()){
radiobuttonControls.add({staticLabel:"Text Only", checkedState:true});
radiobuttonControls.add({staticLabel:"RTF"});
radiobuttonControls.add({staticLabel:"InDesign Tagged Text"});
}
}
}
myReturn = myDialog.show();
if (myReturn == true){
//Get the values from the dialog box.
myExportFormat = myExportFormatButtons.selectedButton;
myDialog.destroy;
myFolder= Folder.selectDialog ("Choose a Folder");
if((myFolder != null)&&(app.activeDocument.stories.length !=0)){
myExportAllStories(myExportFormat, myFolder);
}
}
else{
myDialog.destroy();
}
}
}
//myExportStories function takes care of exporting the stories.
//myExportFormat is a number from 0-2, where 0 = text only, 1 = rtf, and 3 = tagged text.
//myFolder is a reference to the folder in which you want to save your files.
function myExportAllStories(myExportFormat, myFolder){
for(myCounter = 0; myCounter < app.activeDocument.stories.length; myCounter++){
myStory = app.activeDocument.stories.item(myCounter);
myID = myStory.id;
switch(myExportFormat){
case 0:
myFormat = ExportFormat.textType;
myExtension = ".txt"
break;
case 1:
myFormat = ExportFormat.RTF;
myExtension = ".rtf"
break;
case 2:
myFormat = ExportFormat.taggedText;
myExtension = ".txt"
break;
}
if(myStory.paragraphs[0].appliedParagraphStyle = "PRODUCT HEADING"){
myFileName = myStory.paragraphs[0].contents;
myFilePath = myFolder + "/" + myFileName;
myFile = new File(myFilePath);
myStory.exportFile(myFormat, myFile);
}
}
}
appliedParagraphStyle
的类型是[Object ParagraphStyle]
,因此您需要将其与另一个段落样式(即app.activeDocument.paragraphStyles.item("PRODUCT HEADING")
,确实返回段落样式)进行比较,或者比较样式的名称。
此外,不要使用=
进行测试。单个=
是"应用";要测试(in)相等性,请使用双==
。(Javascript还有一个"严格等于"的比较:===
,但在这种情况下不应该使用它。)
如果您将比较行更改为,您的脚本将起作用
if (myStory.paragraphs[0].appliedParagraphStyle.name == "PRODUCT HEADING")
此外,线路
myFileName = myStory.paragraphs[0].contents;
获取整个段落作为文件名,通常这会在末尾包含段落返回。(当这段是故事中的最后一段时除外。)由于您将此字符串用作新文件名,因此必须删除段落返回(如果存在)。这可以通过几种方式实现,但最简单的是使用RegEx替换:
myFileName = myStory.paragraphs[0].contents.replace(/'s*$/,'');
因为这也将免费去除末端的所有杂散空间和标签。
相关文章:
- 跟踪在页面加载时应用内联样式的JavaScript
- W3C循环样式的JavaScript
- 使用具有内联样式的tidy-html5
- 具有所有样式的文本正在复制到可编辑文本区域
- 如何提供在javascript中编写对对象的重复访问以设置元素样式的简写
- 应用程序在呈现Jquery Mobile之前显示无样式的Html
- 将网页转换为具有样式的pdf
- 将Div内容复制到文本区域或具有相同字体族样式的文本
- Javascript em根据窗口/视口尺寸调整大小,不影响文档样式的text/css
- 如何在页面加载时折叠手风琴样式的特定部分
- javascript样式的背景颜色在设置时闪烁.ASP.NET
- Javascript 样式的第 n 个孩子
- HTML + JS:设置文本区域内容样式的最佳方式
- 获取样式的属性
- 为不同的屏幕分辨率加载css样式的Javascript不起作用
- 需要通过Javascript代码应用样式的帮助
- 使用纯JS创建具有id和样式的元素
- Shell样式的函数调用
- jQuery Mobile-过滤复选框的列表视图会导致出现无样式的复选框
- InDesign Script提取段落样式的故事