С вспомогательной функцией перевода Google у меня возникают проблемы при последовательном вызове функции onSubmit. Помощник отлично работает, если вызывается только один раз во время выполнения основной функции.
Вспомогательная функция берет значения из недавно отправленного ответа формы, переводит их, а затем создает новую отправку формы (в той же форме) с переводами для каждого элемента формы.
Проблема при последовательном вызове заключается в том, что переданный параметр, указывающий язык, не сбрасывает соответствующую настройку перевода в вспомогательной функции перевода. Второй вызов продолжает использовать спецификацию языка из первого вызова.
[ОБНОВЛЕНИЕ] Хочу добавить, что в журнале выполнения показаны два последовательных вызова — никаких признаков совпадения. Кроме того, настройки языка во втором вызове перевода выполняются правильно. Проблема, по-видимому, заключается именно в LanguageApp.translate(val,'en', langID). Несмотря на то, что langID для второго перевода задан правильно, функция перевода использует langID, заданный вызовом previous.
Похоже, это может быть проблема с асинхронной функцией, но я не знаю, как это сделать в сценариях приложений. Этот пост предполагает (я думаю), что может возникнуть системная проблема с использованием async: Running асинхронные функции в скрипте Google Apps
Ниже показано, как я вызываю вспомогательную функцию перевода в моей основной функции onFormSubmit. Будут ли два вызова выполняться одновременно без асинхронной или какой-либо другой паузы? (Обратите также внимание, что когда вспомогательная функция создает новую отправку формы с переводами, основная функция onFormSubmit снова автоматически запускается. Таким образом, параллельно будет запущен еще один экземпляр основной функции.)
Как я должен вызывать помощника перевода в этой последовательной ситуации? Спасибо большое.
// Check sheet value & create the default (Spanish) version if not already existing /////
if(!listTranslations.toString().toLowerCase().includes("spanish")){
var translateStatus = translateService("spanish",pageUID); // call translation helper function
// Logger.log(`Spanish add: %s`,translateStatus)
if(translateStatus="Translation Completed"){
listTranslations=listTranslations + "Spanish,"; // add to the list of translations
sheet.getRange(currentRow,saveTranslationCol).setValue(listTranslations);
}
}
// If requested new translation already exists, newLang set to "" earlier in script ////
if(newLang.toString().length > 0){
var translateStatus = translateService(newLang,pageUID); // call translation helper function
// Logger.log(`%s add: %s`,newLang,translateStatus);
if(translateStatus="Translation Completed"){
listTranslations=listTranslations + newLang + ","; // add newLang to the list of translations
sheet.getRange(currentRow,saveTranslationCol).setValue(listTranslations);
};
}