Библиотеките на Google Apps Script вече не се свързват

Имам 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 можете да изпълните всяка функция, дефинирана във вашия сървърен скрипт за приложения. От документацията:

Изпълнява функцията на Apps Script от страната на сървъра със съответното име.

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

Code.gs

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

Page.html

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