源自previous question,我正在为Google文档创建一个Add On,它接收文档正文并将其翻译为同一文档中的新页面。我已经运行了脚本并且它正确地进行了翻译,但是我在修改格式时遇到了麻烦。
使用相同语言复制元素时, This post from last year 效果很好。但是,Google中的LanguageApp
要求string
进行翻译。
我简化了上面链接的脚本以复制文档:
function simpleTranslate() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
Logger.log(body.getAttributes());
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) {
// This block copies formatting correctly
// Pastes English and Spanish into the doc (see img 1).
body.appendParagraph(element);
var spn = LanguageApp.translate(element.getText(), 'en', 'es');
body.appendParagraph(spn);
// This block pastes Spanish only with no formatting (see img 2)
// This block is normally commented out when the script runs for testing
var spn = LanguageApp.translate(element.getText(), 'en', 'es');
body.appendParagraph(spn)
}
}
}
Img1 - 正确的文字格式,粘贴英语和西班牙语
Img1 http://www.brianbennett.org/images/coderesult1.png
Img2 - 删除英语附加内容,西班牙语仍会翻译但由于string
要求而失去格式。
Img2 http://www.brianbennett.org/images/coderesult2.png
我想帮助函数中的逻辑。我认为这样做的唯一方法 - 因为string
要求 - 是逐行,复制英语,翻译新行,然后删除英语。 有没有更好的方法来翻译文字并保留格式?