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_lang
和 source_lang
分别是 values3
和 values2
。如果你想改变这个,请修改上面的脚本。
注:
- 在此修改后的脚本中,假设您已经能够使用您的密钥和当前脚本使用 API。请注意这一点。
参考:
我发现@soMario 更正了@Folleloide
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_lang
和source_lang
分别是values3
和values2
。如果你想改变这个,请修改上面的脚本。
注:
- 在此修改后的脚本中,假设您已经能够使用您的密钥和当前脚本使用 API。请注意这一点。