Невозможно вызвать функцию на стороне сервера, расположенную внутри библиотеки, из кода на стороне клиента - PullRequest
1 голос
/ 23 января 2020

Я попробовал самый простой способ вызова серверной функции скрипта Google Apps из моего html, используя приведенный здесь пример кода https://developers.google.com/apps-script/guides/html/reference/run. Это работает как шарм.

Однако, когда я пытаюсь сделать то же самое в моем реальном проекте, который имеет весь серверный код в библиотеке , это не работает. Я получаю сообщение об ошибке

" Uncaught TypeError: google.script.run.doSomething не является функцией "

Вот пример проекта который я создал, чтобы воссоздать проблему

Gdo c Здесь найдите «Тестовое меню» и нажмите «Открыть боковую панель», чтобы вызвать функциональность. Откройте связанный скрипт , чтобы увидеть код и использование библиотеки.

Код библиотеки

Любая помощь с этим будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Вы пытаетесь вызвать DocumentApp.getUi() из библиотеки.

Как видите, здесь

Скрипт может взаимодействовать только с пользовательским интерфейсом для текущий экземпляр открытого документа, и только если скрипт связан с документом.

Ваша библиотека не связана с вашим документом. Вот почему ваш код не может работать.

Вы можете перемещать только те части кода, которые не используют getUi() или любые Not-shared resources (например, триггеры). Документация определяет, какие ресурсы являются общими, а какие нет.

0 голосов
/ 23 января 2020

Пример:

html:

<script>
function doSomething() {
  google.script.run
  .withSuccessHandler(function(msg){
    window.alert(msg);//Thank's I got it.
  })
  .doSomething();
} 
</script>

<body>
  <input type="button" value="Do Something" onClick="doSomething();" />
</body>

gs:

function doSomething() {
  return 'Thanks I got it';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...