Google文档实时翻译

时间:2016-11-23 14:53:02

标签: google-apps-script google-docs google-translate

我有一种语言的谷歌文档,需要翻译 我知道"工具>翻译文件"选项,但这意味着我必须每次进行更改时手动翻译它。
有没有办法让翻译的文档与原始文档保持同步,这样每次我对原始文档进行更改时,翻译过的文档也会进行适当的更改?
在电子表格中有GOOGLETRANSLATE函数

我认为通过应用程序脚本命令LanguageApp.translate可以实现这一点但是我不知道如何从原始文档中导入该内容

--- ---编辑
目前我已在目标文件上设置此脚本

function translate() {
var original = DocumentApp.openById('Oringinal document id');
var translated = LanguageApp.translate(original, 'zh', 'en');
Logger.log(translated);
return translated;
}

我不确定它是翻译还是什么,日志只显示文档,我不知道如何获取变量的内容,我也不知道如何打印新文件的变量。
在触发器中我只看到时间驱动的触发器?我想在原始文件上设置脚本吗?

1 个答案:

答案 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对其进行硬编码。只是一些改进它的想法。不要忘记,这只会抓取正文,而不是格式化。