Почему я не могу использовать экземпляр объекта внутри onOpen
?
Я экспериментирую со скриптом Google Apps, используя новую среду выполнения V8. Я написал некоторый простой код, который создает экземпляр класса в функции onOpen
и пытается связать вызов метода с этим экземпляром, когда я щелкаю по пункту меню.
Когда я щелкаю по связанному меню при входе я получаю сообщение об ошибке «Функция сценария не найдена». Тем не менее, когда я создаю глобальный экземпляр класса или создаю локальный экземпляр в другой функции, все работает нормально.
Я попытался записать значение локального или глобального экземпляра, но он показывает только пустой объект: {}
.
Это ошибка или какая-то деталь, которую я упустил, читая документацию?
/** Application Class */
class Application {
/**
* ShowUi
*/
showUi() {
// const html = HtmlService.createHtmlOutputFromFile('Ui');
const html = HtmlService.createHtmlOutput('<h1>Hello World</h1>');
const ui = SpreadsheetApp.getUi();
ui.showModalDialog(html, 'User Interface');
}
}
const global_app = new Application();
/** onOpen */
function onOpen() {
const app = new Application();
const ui = SpreadsheetApp.getUi();
const menu = ui.createMenu('JSClass Example');
console.log('app, local scope:');
console.log(app);
console.log('app, global scope');
console.log(global_app);
menu.addItem('Show UI (local)', 'app.showUi');
menu.addItem('Show UI (global)', 'global_app.showUi');
menu.addItem('Show UI (global fn)', 'showUi');
menu.addToUi();
}
/** showUi */
function showUi() {
const app3 = new Application();
app3.showUi();
}
Моя связанная таблица для этого кода здесь . Я думаю, что вам придется сделать копию и щелкнуть несколько страшных предупреждений, чтобы запустить ее.