我正在尝试使用Google应用程序脚本(Google文档脚本 - 我认为它们是javascript的一个版本,如果有帮助)编写一个脚本来做一些相对直接的事情:
我想从标记中搜索:{start}直到标记{end},然后将任何预定义的关键字加粗。然后,一旦完成,我想删除标签{start}和{end}。
对于以下内容:
{start}this, is, some text, in here{end}
this is, some text, in here
我把这段代码写成(mish-mashed),它会搜索段落中的单词,如果找到它们会使它们变粗 - 这是有效的,但是我的主要问题是它也将替换块外的单词(start- >结束)找到时加粗;我不希望脚本影响文档中的其他块或段落。
function emboldenText(docID, textToHighlight) {
var doc = DocumentApp.openById(docID);
var paras = doc.getParagraphs();
var textLocation = {};
var i;
var startLocation;
for (i=0; i<paras.length; ++i) {
textLocation = paras[i].findText(textToHighlight);
if (textLocation != null && textLocation.getStartOffset() != -1) {
Logger.log("hit, making text bold at: "+ textLocation.getStartOffset());
/* Make it bold! */
textLocation.getElement().setBold(textLocation.getStartOffset(),textLocation.getEndOffsetInclusive(), true);
}
}
}
我只是为每个单词调用该函数我喜欢突出显示(大胆): 即:
emboldenText(fileId,'Mustard');
emboldenText(fileId,'Egg');
emboldenText(fileId,'Wheat');
我对从何处开始的想法是:在文档中搜索单词{start},然后搜索一下如何抓住它的元素位置,同时抓住结束位置,然后只用粗体替换单词。 #39;在该部分 - 如何实际实现这一目标正在躲避我。
非常感谢任何帮助!
答案 0 :(得分:1)
这应该这样做:
function BoldBetweenTags() {
var startTag = '{start}';
var endTag = '{end}'
var body = DocumentApp.getActiveDocument().getBody();
var para = body.getParagraphs();
for(var i in para){
var from = para[i].findText(startTag);
var to = para[i].findText(endTag,from);
if((to != null && from != null) && ((to.getStartOffset()-1) - (from.getStartOffset()+startTag.length) > 0) ){
para[i].editAsText().setBold(from.getStartOffset()+startTag.length, to.getStartOffset()-1, true);
}
}
}