gpt4 book ai didi

javascript - Google Apps 脚本两个标签之间的目标文本

转载 作者:行者123 更新时间:2023-12-03 10:30:40 42 4
gpt4 key购买 nike

我正在尝试编写一个脚本来使用 Google 应用程序脚本做一些相对直接的事情(Google 文档脚本 - 我认为它们是 javascript 的一个版本,如果有帮助的话):

我想从标记:{start} 到标记 {end} 进行搜索,然后将任何预定义的关键字加粗。然后,完成后我想删除标签 {start} 和 {end}。

对于以下内容:

{start}this, is, some text, in here{end}
this is, some text, in here

我一起编写(混杂)这段代码,它搜索段落中的单词,如果找到它们,则将它们加粗 - 这有效,但我的主要问题是,它也会替换 block 之外的单词(开始->end) 找到时加粗;我不希望脚本影响文档中的其他 block 或段落。

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},然后如何获取它的元素位置,也获取结束位置,然后仅将单词替换为粗体(如果它位于该部分) -目前我不知道如何真正实现这一目标。

非常感谢任何帮助!

最佳答案

这应该可以做到:

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);
}
}
}

关于javascript - Google Apps 脚本两个标签之间的目标文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232286/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com