google 应用脚本未呈现我翻译的消息
google app script not rendering my translated message
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)
}
这应该会在控制台中记录所选文本并翻译成西班牙语,但由于某种原因不是。请帮忙!
您的代码存在的问题是 LanguageApp.translate() 的第一个参数需要字符串类型,而 Document.getSelection() return 需要一个范围对象。要使文本字符串超出范围,您可以使用以下代码:
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()。
另外注意:这只会 return 第一个 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)
}
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)
}
这应该会在控制台中记录所选文本并翻译成西班牙语,但由于某种原因不是。请帮忙!
您的代码存在的问题是 LanguageApp.translate() 的第一个参数需要字符串类型,而 Document.getSelection() return 需要一个范围对象。要使文本字符串超出范围,您可以使用以下代码:
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()。
另外注意:这只会 return 第一个 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)
}