2014-01-19 81 views
3

我有打开文件并使用replaceText替换字符串的代码。Google Apps脚本使用replaceText()使文本成为可点击的网址

var url = 'http://www.test.com'; 
var doc = DocumentApp.openById(file.getId()); 
doc.replaceText("<<urlGoesHere>>", url); 
doc.saveAndClose(); 

当我打开文档时,替换已经发生,但url不是一个可点击的超链接,它只是静态文本。有没有一种方法将程序设置为可点击的链接?

我发现文本的这种方法称为setLinkUrl,但没有文档/例子:https://developers.google.com/apps-script/reference/document/text#setLinkUrl(String)

任何想法?

+0

是的......这是一个常见的模式,我真的希望他们会修复。 –

+0

我发现至少有一百种方法几乎没有文档。 –

回答

8

这是怎么回事,至少如果你只有一个URL placeHolder发生。

如果你有多个,那么你应该迭代整个文档内容来找到每个文档或它们并全部替换它们。

function myFunction() { 
    var url = 'http://www.google.com'; 
    var doc = DocumentApp.getActiveDocument();// or DocumentApp.openById(file.getId()); as in your example code 
    var element = doc.getBody().findText("<<urlGoesHere>>"); 
    if(element){ // if found a match 
    var start = element.getStartOffset(); 
    var text = element.getElement().asText(); 
    text.replaceText("<<urlGoesHere>>",url); 
    text.setLinkUrl(start, start+url.length, url); 
    doc.saveAndClose(); 
    } // else do nothing 
} 
+1

这个作品,谢谢!我没有足够的声望来赞扬。此外,像往常一样,感谢您对Google Apps脚本社区的贡献。我经常在你的回答中找到我许多问题的答案。 – mike

+0

不客气:)并感谢客气的话。 –