I'm trying to use a deepL API function in Google Spreadsheet to translate some JP texts to EN.
For the script, I copied and pasted from this raw Github repository with custom value replaced (API key).
However, when I saved the script and tried the function (=deepL(cell, target_lan, source_lan)
), this error showed up.
ReferenceError: httpRequestWithRetries_ is not defined (line 84).
And here is the code I used. Could anyone be able to help with this please?
/**
* Translates from one language to another using the DeepL Translation API.
*
* Note that you need to set your DeepL auth key by calling DeepLAuthKey() before use.
*
* @param {"Hello"} input The text to translate.
* @param {"en"} sourceLang Optional. The language code of the source language.
* Use "auto" to auto-detect the language.
* @param {"es"} targetLang Optional. The language code of the target language.
* If unspecified, defaults to your system language.
* @param {"def3a26b-3e84-..."} glossaryId Optional. The ID of a glossary to use
* for the translation.
* @param {cell range} options Optional. Range of additional options to send with API translation
* request. May also be specified inline e.g. '{"tag_handling", "xml"; "ignore_tags", "ignore"}'
* @return Translated text.
* @customfunction
*/
function DeepLTranslate(input,
sourceLang,
targetLang,
glossaryId,
options
) {
if (input === undefined) {
throw new Error("input field is undefined, please specify the text to translate.");
} else if (typeof input === "number") {
input = input.toString();
} else if (typeof input !== "string") {
throw new Error("input text must be a string.");
}
// Check the current cell to detect recalculations due to reopening the sheet
const cell = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getCurrentCell();
if (disableTranslations) {
Logger.log("disableTranslations is active, skipping DeepL translation request");
return cell.getDisplayValue();
}
if (activateAutoDetect &&
cell.getDisplayValue() !== "" &&
cell.getDisplayValue() !== "Loading...") {
Logger.log("Detected cell-recalculation, skipping DeepL translation request");
return cell.getDisplayValue();
}
if (!targetLang) targetLang = selectDefaultTargetLang_();
let formData = {
'target_lang': targetLang,
'text': input
};
if (sourceLang && sourceLang !== 'auto') {
formData['source_lang'] = sourceLang;
}
if (glossaryId) {
formData['glossary_id'] = glossaryId;
}
if (options) {
if (!Array.isArray(options) ||
!Object.values(options).every(function(value) {
return Array.isArray(value) && value.length === 2;
})) {
throw new Error("options must be a range with two columns, or have the form '{\"opt1\", \"val1\"; \"opt2\", \"val2\"}'");
}
for (let i = 0; i < options.length; i++) {
const items = options[i];
const key = items[0];
const value = items[1];
formData[key] = value;
}
}
const response = httpRequestWithRetries_('post', '/v2/translate', formData, input.length);
checkResponse_(response);
const responseObject = JSON.parse(response.getContentText());
return responseObject.translations[0].text;
}