试图找到一种方法,从文档中删除空白页我写这个剧本,没有工作得很好:无尽的循环:为什么无尽?
function remove_blank() {
var Doc = DocumentApp.openById('1ffmPF1iff1ORSPo4XLGyjQGrqVdXx2Py_zza6N_hV3g');
var dd = 1;
var tt='';
var body = Doc.getActiveSection();
while(body.getNumChildren()>dd){
try{
Logger.log(body.getNumChildren()+' '+dd)
var element = Doc.getChild(dd);
var type = element.getType();
if(type == DocumentApp.ElementType.TABLE){++dd}
if(type == DocumentApp.ElementType.PARAGRAPH){
tt=element.getText();
if(tt!=' * '){element.removeFromParent();++dd}
编辑:这条线必须改变这样的: 如果(TT =” *“){element.removeFromParent()}否则{++ DD}
(移除元素时不增加DD,这样做对有效替代款)
}
}
catch(err)
{
break
}
}
}
但我仍然会遇到一个我不明白的问题:当我在具有空白段落和/或分页符的文档上运行该功能时,删除所有内容都很好。 如果我在同一个文档(只有段落/表格/段落......)上再次运行它,它会进入无限循环,并且日志显示var = dd
在= 2之后不再增加。 这是怎么发生的,因为dd
在while循环中的每个表上都增加了? 以下是原始文档内容的日志,以及“处理”文档之后的日志。 (说实话,我必须说,这种情况很可能永远也不会发生,因为被调用的函数只是一个进程内的一次,但我很乐意了解;-)
0 : PARAGRAPH
1 : PARAGRAPH
2 : TABLE
3 : PARAGRAPH
4 : PARAGRAPH
5 : PARAGRAPH
6 : TABLE
7 : PARAGRAPH
8 : PARAGRAPH
9 : PARAGRAPH
10 : TABLE
11 : PARAGRAPH
12 : PARAGRAPH
13 : PARAGRAPH
14 : TABLE
15 : PARAGRAPH
0 : PARAGRAPH
1 : TABLE
2 : PARAGRAPH
3 : TABLE
4 : PARAGRAPH
5 : TABLE
6 : PARAGRAPH
7 : TABLE
8 : PARAGRAPH
继Sephallia的回答后,我用她的建议编辑了剧本......案件结案我猜! thx –