谷歌应用程序脚本无法呈现我翻译的消息

时间:2017-11-02 22:08:13

标签: javascript google-apps-script google-apps

function enes() {   
var doc = DocumentApp.getActiveDocument()   
var text = doc.getSelection()   
var sourceLanguage = 'en'   
var targetLanguage = 'es'   
var replacement = LanguageApp.translate(text, sourceLanguage, 
targetLanguage)   
console.log(text + '=' + replacement)
}

这应该在控制台中记录所选文本,并将翻译记录为西班牙语但由于某种原因不是。请帮助!

1 个答案:

答案 0 :(得分:1)

您的代码的问题是LanguageApp.translate()的第一个参数需要字符串类型,而Document.getSelection()返回一个Range对象。要从Range中获取文本字符串,可以使用以下代码:



function enes() {   
var doc = DocumentApp.getActiveDocument()   
var text = doc.getSelection()
.getRangeElements()[0]
.getElement()
.asText()
.getText();
var sourceLanguage = 'en'   
var targetLanguage = 'es'   
var replacement = LanguageApp.translate(text, sourceLanguage, 
targetLanguage)   
Logger.log(text + '=' + replacement)
}




注意:我使用本机Logger.log()替换了console.log()以方便测试。

另外请注意:这只会返回第一个RangeElement。如果你有更多,你可以通过以下内容循环它们:



function enes() {   
var doc = DocumentApp.getActiveDocument()   
var text = doc.getSelection()
.getRangeElements().getRangeElements().reduce(function(acc,rangeElement){
    return acc+rangeElement
    .getElement()
    .asText()
    .getText();
},"");
var sourceLanguage = 'en'   
var targetLanguage = 'es'   
var replacement = LanguageApp.translate(text, sourceLanguage, 
targetLanguage)   
Logger.log(text + '=' + replacement)
}