1

我发现@soMario 更正了@Folleloide自定义函数,以使用DeepL API翻译 Google 表格中的单元格值:

function deeplapi() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var text = sheet.getRange(3,2).getValue(); // define text before response
  var response = UrlFetchApp.fetch("https://api.deepl.com/v2/translate?auth_key=xxxx-xxxx-xxxx-xxxx-xxxx&text="+ text +"&target_lang=en&source_lang=es");
  var json = response.getContentText(); 
  var data = JSON.parse(json); 
  Logger.log(data);
}

这看起来很有希望,并且确实该功能在 Google Apps 脚本页面中有效:自定义功能正在应用程序脚本页面中工作

但是,这确实是一个愚蠢的问题,但我必须遗漏一些东西,因为我似乎无法在实际工作表中调用该函数 - 例如 GoogleTranslate 函数有效。正如您在此处看到的:名为 DEEPLAPI 的自定义函数未按预期工作

所以对于我们所有的编程傻瓜来说,如果一个慷慨的灵魂可以启发我,那就太好了。

4

1 回答 1

1

修改点:

我认为当您实际deeplapi()在您的问题中使用时,该函数不会返回该值。因为函数的最后一行是Logger.log(data);. 而且,在您的以下情况下(这是您的问题),

您正在使用该功能deeplapi()作为deeplapi(value1, value2, value3). 但是,您的函数deeplapi()不使用参数。我认为这些可能是您的问题的原因。

如果你想使用你的函数 as deeplapi(value1, value2, value3),那么下面的修改呢?

修改后的脚本:

function deeplapi(value1, value2, value3) {
  var url = `https://api.deepl.com/v2/translate?auth_key=xxxx-xxxx-xxxx-xxxx-xxxx&text=${value1}&target_lang=${value3}&source_lang=${value2}`;
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText();
  var data = JSON.parse(json);
  return data.translations && data.translations.length > 0 ? data.translations[0].text : "No value";
}
  • 在这种情况下,target_langsource_lang分别是values3values2。如果你想改变这个,请修改上面的脚本。

笔记:

  • 在这个修改后的脚本中,它假设您已经能够使用您的密钥和当前脚本使用 API。请注意这一点。

参考:

于 2021-05-11T11:36:24.677 回答