gpt4 book ai didi

google-apps-script - 使用谷歌翻译翻译整个谷歌表格

转载 作者:行者123 更新时间:2023-12-04 01:31:52 45 4
gpt4 key购买 nike

我有一个用日语写的谷歌表格。我需要把它转换成英文。
我知道我们可以使用 googletranslate(<sheet!:cell>, <input_language>, <output_language>)翻译。
但是没有脚本,这迫使我翻译每一行。我需要一个可以将我的整个 Google 表格转换成英文的脚本。
我更喜欢将其转换为单独的工作表。请让我知道可能的解决方案。
TIA

最佳答案

  • 您想将电子表格中所有工作表的所有单元格的日文翻译成英文。
  • 您希望将具有翻译值的工作表复制到同一个电子表格。
  • 您想使用 Google Apps 脚本实现此目的。

  • 我可以像上面那样理解。如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。

    在这个答案中,使用了 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 短。但如果值很大,可能会发生错误。关于这一点,我不确定。我为此道歉。
  • 在上面的脚本中,#用作转换为字符串值的分隔符。如果 #在单元格中使用,请更改字符。

  • 笔记:
  • 此修改后的脚本在启用 V8 的情况下运行。

  • 引用:
  • Class LanguageApp
  • 关于google-apps-script - 使用谷歌翻译翻译整个谷歌表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60824929/

    45 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com