gpt4 book ai didi

javascript - InDesign 脚本提取段落样式的故事

转载 作者:行者123 更新时间:2023-11-28 00:58:43 26 4
gpt4 key购买 nike

正在努力处理以下脚本。我修改了找到的脚本,以便它将所有故事提取为 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")确实返回段落样式),或比较样式的名称

此外,不要使用 = 进行测试。单个 = 表示“应用”;要测试相等性,请使用 double ==。 (Javascript 也有“严格等于”比较:===,但在本例中不应使用它。)

如果您将比较行更改为

,您的脚本将起作用
if (myStory.paragraphs[0].appliedParagraphStyle.name == "PRODUCT HEADING")
<小时/>

此外,该行

myFileName = myStory.paragraphs[0].contents;

获取整个段落以用作文件名,通常这将包括末尾的段落返回。 (异常(exception)情况是当该段落是故事中的最后一个段落时。)由于您使用该字符串作为新文件名,因此必须删除段落返回(如果存在)。这可以通过多种方式完成,但最简单的是使用正则表达式替换:

myFileName = myStory.paragraphs[0].contents.replace(/\s*$/,'');

因为这还将免费删除末尾的所有杂散空格和制表符。

关于javascript - InDesign 脚本提取段落样式的故事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25911863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com