如果正文中还有其他元素类型,如何将所有段落合并为一个段落?

时间:2014-02-23 14:35:08

标签: google-apps-script

我正在尝试编写一个将文档的所有段落连接成一个段落的函数。为此,我以这种方式使用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或其他类型转换为段落?是否有一些替代方法可以将所有段落连接成一个单一的段落任务?

1 个答案:

答案 0 :(得分:0)

在第一个段落元素上调用merge可能会导致错误,因为之前没有兄弟要将它合并。

如果列表项是您段落的兄弟,那么在调用merge时也可能导致错误。您可以通过跟踪for循环中的先前兄弟类型来避免这种错误,并且只有在前一个兄弟是段落元素的情况下才调用merge。

通过将列表转换为新创建的段落元素的子元素,可以将列表转换为段落。我不太了解谷歌文档结构,以确定是否允许这样做。