循环遍历Google Doc中的所有元素复制到新页面



我正在为教师提供一种快速的方法,可以使用脚本创建托管在Google Drive上的论文的翻译。预期的行为是脚本处理文档主体元素,翻译文本,并将其复制到附加到文档的新页面。这还需要查找图像并将文档流中的图像复制到翻译中。

我有文本翻译工作-它是抓取段落文本和翻译成一个新的页面。由于某些原因,文档中的图像没有被复制。

脚本

function translate() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  body.appendPageBreak();
  var elements = body.getNumChildren();
  for( var i=0;i<elements;i++) {
   var element = body.getChild(i).copy();
    var type = element.getType();
    if( type == DocumentApp.ElementType.PARAGRAPH ){
      var text = element.asParagraph().getText();
      var spn = LanguageApp.translate(text, 'en', 'es');
      body.appendParagraph(spn);
     }
    else if( type == DocumentApp.ElementType.INLINE_IMAGE ){
      var img = element.asInlineImage().getBlob();
      body.appendImage(img);
    }
  }
}

我发现了这个SO帖子,它迭代了一个文档并打印了控制台中的元素(这对我的逻辑也有帮助)。测试脚本显示了带有INLINE_IMAGE的第二段,但是我的else if捕获并没有将其复制到新页面。

我应该在逻辑中运行不同的测试以获得图像和文本吗?

正如您在问题中提到的,内联图像在第二段中,您应该能够通过首先获取段落然后获取该段中的图像来获取图像。关于这个问题的更多细节,请查看我的帖子。

希望有帮助!

最新更新