Почему я не могу вызвать функцию сервера с боковой панели в Google AppScript для листов? - PullRequest
3 голосов
/ 27 февраля 2020

У меня проблемы с вызовом серверной функции AppScript из боковой панели html в Google Sheets.

Я повторил свою проблему с простым примером кода ниже.

Что он должен делать

Нажатие на кнопку должно вызвать alert в моем скрипте Code.gs и отобразить предупреждение для пользователя.

Что на самом деле происходит

Нажатие на кнопку показывает ошибку:

We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.

В разделе «Выполнения» панели мониторинга AppScript для alert() нет записей, поэтому кажется, что функция даже не вызывается?

Код .gs:

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Matthew')
    .addItem('Show Sidebar', 'sidebar')
    .addToUi();
};

function sidebar() {
  const html = HtmlService.createHtmlOutputFromFile('test.html')
    .setTitle('Matthew Experiment')
    .setWidth(300);

  SpreadsheetApp.getUi().showSidebar(html);


}

function alert() {
  SpreadsheetApp.getUi().alert("alert!"); 
}

test. html (хорошо тело)

  <body>
    <div class="container">
       <button class="btn btn-success" onclick="doSomething()">Click Me!</button>
    </div>
    <script>
            function doSomething() {
          google.script.run.withFailureHandler(function(error) {
            console.log("error")
            console.log(error.message)
          }).withSuccessHandler(function(result) {
            console.log("done!")
          }).alert();
        }
    </script>
  </body>

Я подтвердил, что клиентский код правильно раздувается именами функций на стороне сервера , это просто вызов функции, которая не работает.

enter image description here

Мой код такой же, как и во всех руководствах по началу работы, но я больше никто не пишет об этой проблеме. Надеясь, что кто-то здесь знает о проблеме глубже, чем я.

Обновление, даже страннее

Я открыл личное окно, и оно РАБОТАЛО, поэтому я подумал, может быть, это расширение вызывает проблемы? Но даже отключение всех расширений не исправляет это в главном окне. Я выполнил вход в свою учетную запись Google, но по-прежнему не могу заставить его работать, не открывая приватное окно браузера.

Эта проблема является постоянной в chrome / edge / firefox.

Ответы [ 2 ]

2 голосов
/ 01 марта 2020

Это происходит, когда глобальный вошедший в систему пользователь отличается от владельца скрипта.

Выйдите из системы со своей учетной записью Google, а затем снова войдите в систему с учетной записью, которую вы использовали для создания скрипта. Это решило проблему.

0 голосов
/ 27 февраля 2020

Вот простой пример диалога боковой панели с сервером

function showMySideBar() {
  var html='<input type="button" value="Click Me" onClick="doSomething()" />';
  html+='<script>function doSomething(){google.script.run.withSuccessHandler(function(msg){window.alert(msg);}).pleaseHelp();}</script>';
  SpreadsheetApp.getUi().showSidebar(HtmlService.createHtmlOutput(html));
 }

function pleaseHelp() {
  return 'What can I do to help?';
}
...