Библиотеки скриптов Google Apps больше не связываются

У меня есть 3 скрипта Google Apps, которым я пытаюсь разрешить общаться друг с другом через опцию библиотеки, но мне не удалось заставить его работать. В какой-то момент у меня было 2 связанных, и это работало, а затем я решил разделить один скрипт на 2, но теперь библиотеки не работают, и я чувствую, что упускаю что-то очевидное.

Библиотеки

Библиотеки SendToSlack и EmployeeList перечислены в третьем скрипте, и он выглядит нормально. Затем я попытался вызвать их с помощью:

// this one is in an external JS file

google.script.run.withSuccessHandler(populateNamesList).EmployeeList.getNames();

// this one is in a GS file as standard

SendToSlack.initalise(chan, botName, message, iconEmoji);

Этот код работал раньше. Теперь, когда я загружаю страницу, я получаю сообщение об ошибке:

Uncaught TypeError: Cannot read property 'getNames' of undefined

И когда я нажимаю кнопку, чтобы активировать вторую строку, я получаю:

Uncaught  at userClicked

Я думаю, что код правильный, но я как-то сломал библиотеки?

Изменить: автозаполнение в онлайн-среде IDE даже работает. Так что я уверен, что код правильный. Я не понимаю, почему это не работает при публикации.


person dsellis    schedule 06.01.2020    source источник


Ответы (1)


С помощью google.script.run вы можете выполнить любую функцию, определенную в вашем серверном сценарии приложений. Из документации:

Выполняет функцию скрипта приложений на стороне сервера с соответствующим именем.

Однако вы не можете указать какую-либо переменную, как вы это делаете. Функции должны быть объявлены в глобальной области сценария, чтобы их можно было запустить. В этом случае, если вы хотите вызвать функцию getNames(), доступную через глобальный объект EmployeeList, вы должны создать глобальную функцию в своем скрипте, которая инкапсулирует вызов. Например:

Code.gs

function getEmployeeNames() {
  return EmployeeList.getNames();
}

Страница.html

...
<script>
google.script.run.withSuccessHandler(populateNamesList).getEmployeeNames();
</script>
...
person carlesgg97    schedule 06.01.2020