Google文档中的body.replaceText()

时间:2018-06-08 15:30:43

标签: google-apps-script google-docs

我编写了一个在docs中使用spinText同义词的函数。 IE浏览器。我在文档中有这样的文字:" {Hello | Hi} Mr {Thomas | Mathew | Andrew}"

函数给我2个数组:toreplace [],synonyms []但

的结果
for (var i = 0; i < rangeElements.length; ++i) {

  body.replaceText(toreplace[i],synonyms[i]); 

}

给我一​​个这样的文字:嗨|嗨先生安德鲁|安德鲁|安德鲁但是我想得到&#34;嗨先生安德鲁&#34;。

我尝试了Logger.log(toreplace [0])并得到了#34; {Hello | Hi}&#34;和Logger.log(同义词[0])显示&#34;嗨&#34;所以它应该被翻译成body.replaceText(&#39; {Hello | Hi}&#39;,&#39;嗨&#39;);

我做错了什么?

function synonymize() {
var body = DocumentApp.getActiveDocument().getBody();

var rangeElements = [];
var rangeElement=null;
var start=[];
var end=[];
var lentabs=[];
var str;
var synonyms=[];
var toreplace=[];
var x=0;

while (rangeElement = body.findText('[{].+?[}]',rangeElement))
{
  rangeElements.push(rangeElement);

  start.push(rangeElement.getStartOffset());
  end.push(rangeElement.getEndOffsetInclusive());

}  


  for (var i = 0; i < rangeElements.length; ++i) {


    lentabs[i]=rangeElements[i].getElement().getText().substring(start[i]+1, end[i]).split('|').length

    toreplace[i]=rangeElements[i].getElement().getText().substring(start[i], end[i]+1);


    min=0;
    max=lentabs[i]-1;

    rand=Math.floor(Math.random()*(max-min+1)+min)
    synonyms.push(rangeElements[i].getElement().getText().substring(start[i]+1, end[i]).split('|')[rand]);

}


for (var i = 0; i < rangeElements.length; ++i) {

  body.replaceText(toreplace[i],synonyms[i]); 

}

}

1 个答案:

答案 0 :(得分:1)

确定。问题出在&#34; |&#34;被视为正则表达式。我将文档中的文本更改为&#34; {Hello#Hi} Mr {Thomas#Mathew#Andrew}&#34;现在它工作正常。