Обработчик, вызываемый другим кодом при выполнении другого кода, является требованием асинхронной связи.Если вы хотите, вы можете определить встроенный обработчик:
const TASK = google.script.run.withFailureHandler(errorOutput);
TASK
.withSuccessHandler((info, userObj) => {
...
})
.foo();
TASK
.withSuccessHandler((otherInfo, userObj) => {
...
})
.otherFoo();
...
Или, если вы презираете обратные вызовы, вы можете использовать Promises на стороне клиента HTML:
const makeAppsScriptCall = (fnName, obj, ...args) => {
return new Promise((resolve, reject) => {
let TASK = google.script.run
.withSuccessHandler(resolve)
.withFailureHandler(reject);
if (obj) {
TASK = TASK.withUserObject(obj);
}
if (TASK[fnName] === undefined) {
reject("'" + fnName + "' is not a global function in your Apps Script project");
} else {
TASK[fnName].apply(null, args);
}
});
};
function doStuffAsPromises(userObjBtn) {
makeAppsScriptCall("finish", userObjBtn, myarg1, myarg2, myarg3, ...)
.then(...)
.catch(...);
}
(Очевидно, если клиентБраузер не поддерживает Promises или синтаксис распространения для «параметров покоя», вам необходимо будет заполнить / изменить соответствующим образом.)
Ссылки