在 Google 文档中的命名范围后添加段落也会将其添加到该范围
Adding a paragraph after a named range in a Google Document also adds it to that range
我需要在文档中创建多个范围。在每个范围内都有一个段落,但每次我在新范围内创建一个新段落时,该段落也在上述范围内找到
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
这是一个 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();
}
溜溜球运行两次后的输出是
[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
我需要在文档中创建多个范围。在每个范围内都有一个段落,但每次我在新范围内创建一个新段落时,该段落也在上述范围内找到
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
这是一个 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();
}
溜溜球运行两次后的输出是
[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