我有一种语言的谷歌文档,需要翻译
我知道"工具>翻译文件"选项,但这意味着我必须每次进行更改时手动翻译它。
有没有办法让翻译的文档与原始文档保持同步,这样每次我对原始文档进行更改时,翻译过的文档也会进行适当的更改?
在电子表格中有GOOGLETRANSLATE
函数
我认为通过应用程序脚本命令LanguageApp.translate
可以实现这一点但是我不知道如何从原始文档中导入该内容
--- ---编辑
目前我已在目标文件上设置此脚本
function translate() {
var original = DocumentApp.openById('Oringinal document id');
var translated = LanguageApp.translate(original, 'zh', 'en');
Logger.log(translated);
return translated;
}
我不确定它是翻译还是什么,日志只显示文档,我不知道如何获取变量的内容,我也不知道如何打印新文件的变量。
在触发器中我只看到时间驱动的触发器?我想在原始文件上设置脚本吗?
答案 0 :(得分:1)
这只是概念证明。该脚本有效,但不会保留格式或图像。请注意,Google Doc没有onEdit
触发器。您可以创建自定义时间触发器,但如果您的文档未更新,它将继续在后台运行,这可能是也可能不是。
// Grab the document body. No formatting, tables, etc are kept.
function getText() {
var sourceDoc = DocumentApp.openById('idHere');
var sourceBody = sourceDoc.getBody();
// Push the body to an array for translating in the destination
var array = [];
array.push(sourceBody.getText());
translateText(array);
}
// Take the array and translate to Spanish.
function translateText(e) {
// Translate the array
var es = LanguageApp.translate(e, 'en', 'es');
// Open the doc to hold the translation
var childDoc = DocumentApp.getActiveDocument();
// Clear out any previously-held text and then append the updated text from source.
childDoc.getBody().clear();
childDoc.getBody().appendParagraph(es);
}
这很粗糙,但如果将其添加到子文档并从脚本编辑器运行,它将会起作用。您还可以重构它以从源工作,并推送到子文档。它还可以设置一个变量来保存文档的原始ID,这样您就不必使用PropertiesService
对其进行硬编码。只是一些改进它的想法。不要忘记,这只会抓取正文,而不是格式化。