我无法弄清楚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]+');
}
答案 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);
}
那应该为你解决。