Веб-приложение, использующее скрипт Google Apps, не работает с распределенным URL - PullRequest
1 голос
/ 07 ноября 2019

Что делает программа: Я написал простой скрипт Служб Google, который извлекает непрочитанные электронные письма из ярлыка в учетной записи Gmail, в которой в данный момент выполнен вход, и возвращает количество этих электронных писем и отображает его наВеб-сайт.

Проблема: Эта программа работает, когда я создал веб-приложение на компьютере, на котором я его разработал, и запустил его с веб-сайта. Однако, если я скопирую URL-адрес и разошлю его на другой компьютер, который зарегистрирован как другой аккаунт Google, он не будет работать.

Код:

/*Sample.gs*/ 
function doGet(e){
    return HtmlService.createHtmlOutputFromFile('Run.html');
}

function GetUnreadCount(sourceLabel){
    return GmailApp.getUserLabelByName(sourceLabel).getUnreadCount();
}

function Main()
{   
    /*For testing, return unread email count from "CustomerA" label of Gmail*/
    return GetUnreadCount("CustomerA");
}

.

/*Run.html*/
<!DOCTYPE html> 
<html>
  <head>
    <base target="_top">
    <script>
        function CallGetUnreadCount() {

          document.getElementById('Messages').innerHTML = 'Counting...';

          google.script.run
            .withSuccessHandler(onSuccess)
            .withFailureHandler(onFailure)
            .Main();          
        }

        function onSuccess(UnreadCount) 
        {
          document.getElementById('Messages').innerHTML = "There are " + UnreadCount + " unread emails.";
        }

        function onFailure(error) 
        {
          document.getElementById('Messages').innerHTML = "Err: " + error.message;
        }

    </script>
  </head>
  <body>
    <div>
        <h1 id="Messages">Count # of unread emails</h1>
    </div>
    <div>
        <button type="button" onclick='CallGetUnreadCount();' id="CountButton">Count Unread Emails</button> 
    </div>
  </body>
</html>

Эта программа отлично работает, если я запускаю ее на компьютереЯ написал этот скрипт на. Однако, если я разверну его как веб-приложение и разошлю URL-адрес (оканчивающийся на /exec), и запусту его на другом компьютере, который вошел в систему под другой учетной записью Gmail, он всегда возвращает 0, даже если в нем есть непрочитанные письма. CustomerA ярлык. Что меня смущает, так это то, что эта же программа работает на другом компьютере, если я создаю новый проект на этом компьютере и скопирую приведенный выше код в файл .gs и html и разверну его как веб-приложение.

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

1 Ответ

1 голос
/ 07 ноября 2019

При развертывании в виде веб-приложения (Publish > Deploy as web app) можно настроить несколько параметров:

deploy as web app

  • Выполнитьприложение как : может быть либо Me , либо Пользователь, обращающийся к веб-приложению . В вашем случае вы должны использовать более позднюю версию, чтобы заставить ее работать так, как вы ожидаете.
  • У кого есть доступ к этому приложению : Может быть либо Только myselft , Любой в вашем домене или Любой . Вы должны убедиться, что это 2-й или 3-й вариант, в зависимости от ваших потребностей, чтобы пользователь мог правильно его выполнить.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...