Google Apps脚本:查找所有匹配项并设置样式

时间:2015-09-11 21:38:09

标签: google-apps-script

我无法弄清楚Google Apps脚本中的查找/下一步是如何工作的。 在这里的例子中,我试图在作者列表中标注数字。但是我的循环没有退出,大概是因为它只是一遍又一遍地选择第一个项目。

编辑:更新了'from'参数:循环仍未退出?我添加了一些日志注释,它仍然卡在第一项(起始偏移和结束偏移都是= 10)

  var doc = DocumentApp.create('test1');
  var authors = "Josh Smith1, Zach Johnson2";
  var paragraph = doc.getBody().appendParagraph(authors);
  var text = paragraph.editAsText();
  var range = text.findText('[0-9]+');

  while(range)
  {      
    Logger.log("START OFFSET: " + range.getStartOffset());
    Logger.log("END OFFSET: " + range.getEndOffsetInclusive());
    Logger.log("PARAGRAPH ELEMENT: "+ paragraph.editAsText().getText());        
    text.setTextAlignment(range.getStartOffset(),range.getEndOffsetInclusive(),DocumentApp.TextAlignment.SUPERSCRIPT);
    range = text.findText('[0-9]+', range);
  }

ORIGINAL

var authors = "Josh Smith1, Zach Johnson2";
var paragraph = doc.getBody().appendParagraph(authors);
var text = paragraph.editAsText();
var range = text.findText('[0-9]+');


while(range)
{
  text.setTextAlignment(range.getStartOffset(),range.getEndOffsetInclusive(),DocumentApp.TextAlignment.SUPERSCRIPT);
  range = text.findText('[0-9]+');
}

1 个答案:

答案 0 :(得分:0)

INFO:此处提供的解决方案是正确的,但现在there is a bug in Google Apps Script,这将使此代码循环。没有修复日期。

你是正确的,它被困在第一项。但是,它很容易修复。 findText()函数可以带一个或两个参数。第一个参数始终是搜索模式,第二个可选参数是地点from where it should start searching。所以固定代码是:

var authors = "Josh Smith1, Zach Johnson2";
var paragraph = doc.getBody().appendParagraph(authors);
var text = paragraph.editAsText();
var range = text.findText('[0-9]+');

while(range)
{      
  text.setTextAlignment(range.getStartOffset(),range.getEndOffsetInclusive(),DocumentApp.TextAlignment.SUPERSCRIPT);
  range = text.findText('[0-9]+', range);
}

那应该为你解决。