Javascript 使用谷歌文档脚本翻译文本的逻辑
源于,我正在为Google文档创建一个附加组件,它获取文档的主体并将其转换为同一文档中的新页面。我有脚本运行,它的翻译正确,但我有逻辑问题,以保持格式 在复制相同语言的元素时效果良好。但是,谷歌的Javascript 使用谷歌文档脚本翻译文本的逻辑,javascript,google-apps-script,Javascript,Google Apps Script,源于,我正在为Google文档创建一个附加组件,它获取文档的主体并将其转换为同一文档中的新页面。我有脚本运行,它的翻译正确,但我有逻辑问题,以保持格式 在复制相同语言的元素时效果良好。但是,谷歌的LanguageApp需要一个字符串来翻译 我简化了上面链接的脚本以在其内部复制文档: function simpleTranslate() { var doc = DocumentApp.getActiveDocument(); var body = doc.getBody(); Log
LanguageApp
需要一个字符串来翻译
我简化了上面链接的脚本以在其内部复制文档:
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)
}
}
}
函数simpleTranslate(){
var doc=DocumentApp.getActiveDocument();
var body=doc.getBody();
Logger.log(body.getAttributes());
var elements=body.getNumChildren();
对于(var i=0;i,由于机器翻译不是逐字操作,因此可以合理地假设每个翻译段落的格式都是相同的(即整个段落将具有相同的格式)
鉴于此,您可以使用复制段落的大部分格式,然后使用将其应用于新段落
比如:
...
if(type == DocumentApp.ElementType.PARAGRAPH) {
// get formatting attributes
var attributes = element.getAttributes();
var spn = LanguageApp.translate(element.getText(), 'en', 'es');
var newParagraph = body.appendParagraph(spn);
// Copy format to translated paragraph
newParagraph.setAttributes(attributes)
}
...
你能举个例子吗(图片就可以了)显示问题?轻推-如果有帮助,为什么不升级它?现在在学校,所以我不能发布图片…今晚会这样做。我想我已经升级了。谢谢提醒。@Mogsdad刚刚更新了更干净的代码和一些图片,显示了在这两种情况下运行脚本的输入和结果。酷-我会看看这个evening,除非其他人先弄明白!我没有尝试使用第二个变量设置属性-我一直将它链接到body.appendparagration(spn)上
结果参差不齐。我将在今天的计划时间内再玩一些,看看什么能起作用。我已经有一段时间没有处理这些函数了;我还记得它们很挑剔。您可能需要检查返回的属性以查找字体样式,然后显式地设置它们。我想这是传递给at不带属性。从长远来看这没什么大不了的。我没有太多的格式要重做,所以我不打算逐行阅读。无论如何,谢谢你的建议。