我需要在doc中创建多个范围。在每个范围内都有一个段落,但每次我在新范围内创建一个新段落时,此段落也会在上面的范围内找到
function onOpen(e){
DocumentApp.getUi()
.createAddonMenu()
.addItem('Star', 'yoyo')
.addToUi();
}
function onInstall(e) {
onOpen(e);
}
function onInstall(e) {
onOpen(e);
}
function ver(){
var doc = DocumentApp.getActiveDocument();
var ranges=doc.getNamedRanges();
Logger.log('%s ',ranges.length);
for(var index=0 ; index<ranges.length; index++){
for(var t=0; t<ranges[index].getRange().getRangeElements().length;t++){
Logger.log('%s y es de %s',ranges[index].getName(), index);
}
}
}
function yoyo(){
var doc=DocumentApp.getActiveDocument();
var body=doc.getBody();
var rangeBuilde = doc.newRange();
var name = body.appendParagraph('yasmany');
var apellido = body.appendParagraph('gonzalez');
var madre = body.appendParagraph('matilde');
rangeBuilde.addElement(name);
rangeBuilde.addElement(apellido);
rangeBuilde.addElement(madre);
var re = rangeBuilde.build();
doc.addNamedRange('ymy2', re);
ver();
}
Logger.log()
包含(运行yoyo 2次后)
[16-03-10 16:01:49:888 PST] 2.0
[16-03-10 16:01:49:892 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:895 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:898 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:901 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:904 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:907 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:913 PST] ymy2 y es de 1.0
[16-03-10 16:01:49:915 PST] ymy2 y es de 1.0
[16-03-10 16:01:49:917 PST] ymy2 y es de 1.0
但我想要这个
[16-03-10 16:01:49:888 PST] 2.0
[16-03-10 16:01:49:892 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:895 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:898 PST] ymy2 y es de 0.0
[16-03-10 16:01:49:913 PST] ymy2 y es de 1.0
[16-03-10 16:01:49:915 PST] ymy2 y es de 1.0
[16-03-10 16:01:49:917 PST] ymy2 y es de 1.0
答案 0 :(得分:0)
这是一个Apps脚本错误:在命名范围包含在范围内后立即添加了一个段落,尽管documentation明确指出命名范围应该是不可变的。
要解决此问题,请始终在文档末尾添加空段落。以下函数替代appendParagraph
方法,确保最后总是有一个空白段落:
function appendPara(body, text) {
var newPara = body.appendParagraph(text);
body.appendParagraph('');
var previous = newPara.getPreviousSibling();
if (previous.asText().getText().length === 0) {
previous.removeFromParent();
}
return newPara;
}
使用此函数代替appendParagraph
解决了问题:
function yoyo() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var rangeBuilde = doc.newRange();
var name = appendPara(body, 'yasmany');
var apellido = appendPara(body, 'gonzalez');
var madre = appendPara(body, 'matilde');
rangeBuilde.addElement(name);
rangeBuilde.addElement(apellido);
rangeBuilde.addElement(madre);
var re = rangeBuilde.build();
doc.addNamedRange('ymy2', re);
ver();
}
两次运行yoyo后的输出是
[16-03-11 19:42:47:730 PST] 2.0
[16-03-11 19:42:47:733 PST] ymy2 y es de 0.0
[16-03-11 19:42:47:734 PST] ymy2 y es de 0.0
[16-03-11 19:42:47:736 PST] ymy2 y es de 0.0
[16-03-11 19:42:47:739 PST] ymy2 y es de 1.0
[16-03-11 19:42:47:740 PST] ymy2 y es de 1.0
[16-03-11 19:42:47:742 PST] ymy2 y es de 1.0