将超链接应用于文本的脚本

时间:2018-08-09 00:23:30

标签: javascript adobe-indesign

由于不熟悉编码,因此无法调整下面的代码。我需要超链接“#”和“#”之后的所有内容,直到出现“空格”为止。 “#”之后的数字可以是变量,并且最多可以有五个数字。

以下示例:

enter image description here

var doc = app.activeDocument; 

// get URL 

app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing; 

app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\\S+\\>='; 

var mURL = doc.findGrep(); 

// get Texte 

app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing; 

app.findGrepPreferences.findWhat = '#'; 

var mSource = doc.findGrep(); 

 

for (var k = 0; k <mSource.length; k++){ 

   var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents); 

   var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]); 

  mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination); 

  mHyperlink.name =mURL[k].contents; 

  mHyperlink.visible=false; 

} 

//remove URL text 

app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing; 

app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\\S+\\>='; 

app.changeGrepPreferences.changeTo = ''; 

doc.changeGrep(); 

1 个答案:

答案 0 :(得分:0)

这应该有效:

var doc = app.activeDocument; 

// get URL 
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing; 
app.findGrepPreferences.findWhat = '\\s(https?|www)(://).+$'; 
var mURL = doc.findGrep(); 

// get Texte 
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing; 
app.findGrepPreferences.findWhat = '#\\d{1,5}'; 
var mSource = doc.findGrep(); 

for (var k = 0; k <mSource.length; k++){ 
  var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents); 
  var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]); 
  mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination); 
  mHyperlink.name =mURL[k].contents + '_' + k; 
  mHyperlink.visible=false; 
} 

//remove URL text 
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing; 
app.findGrepPreferences.findWhat = '(?<= )(https?|www)(://).+$'; 
app.changeGrepPreferences.changeTo = ''; 
doc.changeGrep(); 

总体来说,只是一些小的调整

1)更改URL的grep搜索

2)更改了grep搜索的数字(“#”后跟1-5位数字)

3)两个超链接不能具有相同的名称。我更改了该行的编号,您可能想要进行调整以满足自己的需要,您可以做的一件事就是使用mSource[k].contents + '_' + mURL[k].contents,尽管如果重复的话,也会遇到相同的问题。

相关问题