我正在尝试在Google文档中找到某些字词,以便通过脚本格式化它们。问题是,似乎findText()只能在第一段中找到该单词。如果它在其他地方,findText()将疯狂并给我(看似)随机位置的单词。以下是它的编码方式:
function findBoldMarks(){
var doc = DocumentApp.openById('docId');
var docText = doc.editAsText();
// search initial bold markup
var srcB0 = body.findText('bold0');
var idB0 = srcB0.getStartOffset();
// search final bold markup
var srcB1 = body.findText('bold1');
var idB1End = srcB1.getEndOffsetInclusive();
// set markup and text wrapped within bold markup as bold
docText.setBold(idB0, idB1End, true);
}
我觉得我必须忽略一些基本的东西,但经过几个小时的努力,我不再确定了。我很感激任何想法。谢谢!
答案 0 :(得分:0)
要继续搜索第一个匹配项,您需要循环搜索并在findText()中提供第二个“from”参数。
以下是仅搜索1个字的示例的开头......
function findBoldMarks(){
var body = DocumentApp.getActiveDocument().getBody();
var pattern = "bold0";
var searchResult = body.findText(pattern);
var style = {};
style[DocumentApp.Attribute.BOLD] = true;
while (searchResult !== null) {
var thisElement = searchResult.getElement();
var thisElementText = thisElement.asText();
thisElementText.setAttributes(searchResult.getStartOffset(), searchResult.getEndOffsetInclusive(),style);
// search for next match
searchResult = body.findText(pattern, searchResult);
}
}
...源自this post中的一些答案。
也许某些人可以修改以在两个搜索词之间包含文本。 findText()
似乎不接受正则表达式搜索模式,因此可能需要采用另一种方法。