试图找到一种从文档中删除空白页的方法,我编写了这个脚本,它做得很好:
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}
编辑:必须像这样更改此行: if(tt!=' * '){element.removeFromParent()}else{++dd}
(删除元素时不要增加 dd ,而是在有效段落上执行)
}
}
catch(err)
{
break
}
}
}
但是我仍然遇到一个我不明白的问题:当我在包含空段落和/或分页符的文档上运行该函数以删除所有内容时,一切都很好。如果我在同一个文档上再次运行它(只有段落/表格/段落......)它会进入无限循环,并且日志显示 vardd
在 =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