Google 使用 DeepL 翻译的表格自定义函数 API 未按预期工作

Google Sheets custom function to translate with DeepL API not working as expected

我发现@soMario 更正了@Folleloide to translate cell values in Google Sheets using DeepL API:

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 脚本页面中有效:Custom function is working in Apps Script page

然而,这真的是一个愚蠢的问题,但我一定遗漏了一些东西,因为我似乎无法在实际的 sheet 中调用函数——例如 Google翻译功能有效。正如您在这里看到的:Custom function named DEEPLAPI not working as expected

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

修改点:

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

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

如果你想像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。请注意这一点。

参考: