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)
}
这应该在控制台中记录所选文本,并将翻译记录为西班牙语但由于某种原因不是。请帮助!
答案 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)
}