Javascript Indesign脚本GREP在应用超链接目标时出错
在InDesign中偶然发现了一个关于脚本、GREP和超链接的非常奇怪的问题。我正在尝试编写一个脚本(js),它可以自动创建一本大书(电子书)的超链接。我已经成功地编写了一个词汇表超链接脚本,但这是为章节参考。其想法是使用GREP搜索来查找与标题样式匹配的所有单词(在本例中为下划线,20pt),然后在该点插入超链接目的地。奇怪的是,当脚本运行时,它会弄乱从上一行查找文本的GREP搜索结果Javascript Indesign脚本GREP在应用超链接目标时出错,javascript,adobe-indesign,extendscript,Javascript,Adobe Indesign,Extendscript,在InDesign中偶然发现了一个关于脚本、GREP和超链接的非常奇怪的问题。我正在尝试编写一个脚本(js),它可以自动创建一本大书(电子书)的超链接。我已经成功地编写了一个词汇表超链接脚本,但这是为章节参考。其想法是使用GREP搜索来查找与标题样式匹配的所有单词(在本例中为下划线,20pt),然后在该点插入超链接目的地。奇怪的是,当脚本运行时,它会弄乱从上一行查找文本的GREP搜索结果 var doc=app.activeDocument; doc.hyperlinkTextDestina
var doc=app.activeDocument;
doc.hyperlinkTextDestinations.everyItem().remove();
doc.hyperlinkTextSources.everyItem().remove();
doc.hyperlinks.everyItem().remove();
app.findgrepreferences=app.changegrepreferences=null;
app.findgrepreferences.pointSize=20;
app.findgrepreferences.underline=true;
app.findgrepreferences.findWhat='';
var results=app.activeDocument.findGrep();
对于(var i=0;i }
将文本从结尾改为开头。为循环反转您的,或者(更容易)更改查找结果的返回顺序:
var results = app.activeDocument.findGrep(true);
(有关布尔值的含义,请参见此处)
它从开始到结束不起作用的原因是,您正在将结果
列表存储到一个变量中,并且在以后更改文本时,它不会得到更新。不幸的是,“插入超链接目的地”就是这样做的:它在运行的文本中插入一个隐藏字符。从那时起,所有以前找到的位置都不再可信,因此您必须重新执行findGrep
命令(并跳过第一个找到的结果)–或从头到尾处理结果,这样您所做的任何更改都不会影响您仍然需要处理的文本。改为从头到尾更改文本。为
循环反转您的,或者(更容易)更改查找结果的返回顺序:
var results = app.activeDocument.findGrep(true);
(有关布尔值的含义,请参见此处)
它从开始到结束不起作用的原因是,您正在将结果
列表存储到一个变量中,并且在以后更改文本时,它不会得到更新。不幸的是,“插入超链接目的地”就是这样做的:它在运行的文本中插入一个隐藏字符。从那时起,所有以前找到的位置都不再可信,因此您必须重新执行findGrep
命令(并跳过第一个找到的结果)–或者从头到尾处理结果,这样您所做的任何更改都不会影响您仍然需要处理的文本