Google Apps 脚本:查找所有匹配项并设置样式
Google Apps Script: find all occurrences and set style
我无法弄清楚 find/next 在 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);
}
原创
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]+');
}
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);
}
这应该可以为您解决。
我无法弄清楚 find/next 在 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);
}
原创
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]+');
}
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);
}
这应该可以为您解决。