Что делает программа. Я написал простой скрипт Google Apps, который извлекает непрочитанные сообщения электронной почты с ярлыка в учетной записи 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 ответ
When Deploying as web app (Publish > Deploy as web app
), there are a few options to configure:
- Execute the app as: Can be either Me, or User accessing the web app. For your case, you must use the later to make it work as you expect.
- Who has access to this app: Can be either Only myselft, Anyone within your domain or Anyone. You have to make sure it's either the 2nd or 3rd option, depending on your needs, so that the user can properly execute it.
Похожие вопросы
Новые вопросы
google-apps-script
Используйте для вопросов о Google Apps Script, серверной платформе Google для облачных сценариев на основе Javascript для автоматизации задач в продуктах Google и сторонних службах. Используйте в дополнение к релевантным тегам продукта (например, [google-sheets], [google-docs]) или API (например, [google-drive-api]), где это применимо.
each computer
ofif each computer deploys the web app on their own
.each computer
means each Google account?Execute the app as:
andWho has access to the app:
? I thought that your issue might be resolved by the settings of Web Apps.