我有一个用日语写的谷歌表格。我需要把它转换成英文。
我知道我们可以使用 googletranslate(<sheet!:cell>, <input_language>, <output_language>)
翻译。
但是没有脚本,这迫使我翻译每一行。我需要一个可以将我的整个 Google 表格转换成英文的脚本。
我更喜欢将其转换为单独的工作表。请让我知道可能的解决方案。
TIA
最佳答案
我可以像上面那样理解。如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。
在这个答案中,使用了 Class LanguageApp。
模式一:
在此模式中,每个单元格都使用
LanguageApp.translate()
进行翻译。 .示例脚本:
请将以下脚本复制并粘贴到电子表格的容器绑定(bind)脚本中。并运行
myFunction
在脚本编辑器中。这样,电子表格中所有工作表的所有单元格都从日语翻译成英语。翻译后的值被放入同一个电子表格中的插入工作表中。function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
sheets.forEach(sheet => {
const s = sheet.copyTo(ss).setName(`translated_${sheet.getSheetName()}`);
const range = s.getDataRange();
const translatedValues = range.getDisplayValues().map(r => r.map(c => {
Utilities.sleep(1000);
return LanguageApp.translate(c, "ja", "en");
}));
range.setValues(translatedValues);
});
}
Utilities.sleep(1000)
(等待 1 秒)需要使用。这样,当有很多单元格时,处理时间可能会很长。 模式二:
在此模式中,将检索工作表中的所有单元格并将其转换为字符串值,然后转换字符串值。并且翻译后的值被放入工作表中。
示例脚本:
请将以下脚本复制并粘贴到电子表格的容器绑定(bind)脚本中。并运行
myFunction
在脚本编辑器中。这样,电子表格中所有工作表的所有单元格都从日语翻译成英语。翻译后的值被放入同一个电子表格中的插入工作表中。function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
sheets.forEach(sheet => {
const s = sheet.copyTo(ss).setName(`translated_${sheet.getSheetName()}`);
const range = s.getDataRange();
const delimiter = "#";
const sourceValues = range.getDisplayValues().map(r => r.join(delimiter)).join("\n");
const translatedValues = Utilities.parseCsv(LanguageApp.translate(sourceValues, "ja", "en"), delimiter.charCodeAt(0));
range.setValues(translatedValues);
Utilities.sleep(1000);
});
}
LanguageApp.translate()
的一个请求进行转换。 .这样,处理时间将比模式 1 短。但如果值很大,可能会发生错误。关于这一点,我不确定。我为此道歉。 #
用作转换为字符串值的分隔符。如果 #
在单元格中使用,请更改字符。 笔记:
引用:
关于google-apps-script - 使用谷歌翻译翻译整个谷歌表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60824929/