我正在尝试编写一个将文档的所有段落连接成一个段落的函数。为此,我以这种方式使用merge
方法(joinAndInsert
变量是文档ID):
if(joinAndInsert){
Logger.log("joinAndInsert = " + joinAndInsert);
var paragraphs = DocumentApp.openById(docId).getBody().getParagraphs();
Logger.log("paragraphs = " + paragraphs);
for (var c=0; c<paragraphs.length; c++){
var par = paragraphs[c];
if(par.getType() == DocumentApp.ElementType.PARAGRAPH) {
par.merge();
}
var text = DocumentApp.openById(docId).getBody().getParagraphs();
var insertedDoc = DocumentApp.openById(joinAndInsert).editAsText().insertText(0, text);
}
}
文档正文有时会有LIST_ITEM
个对象。尽管我有if
条件,但我收到一个错误,说该对象必须与merge
方法工作的类型相同。
有没有办法将LIST_ITEM
或其他类型转换为段落?是否有一些替代方法可以将所有段落连接成一个单一的段落任务?
答案 0 :(得分:0)
在第一个段落元素上调用merge可能会导致错误,因为之前没有兄弟要将它合并。
如果列表项是您段落的兄弟,那么在调用merge时也可能导致错误。您可以通过跟踪for循环中的先前兄弟类型来避免这种错误,并且只有在前一个兄弟是段落元素的情况下才调用merge。
通过将列表转换为新创建的段落元素的子元素,可以将列表转换为段落。我不太了解谷歌文档结构,以确定是否允许这样做。