Я новичок в скриптах приложений и веб-разработке. Я подумал, что было бы неплохо сделать простое приложение, чтобы начать работу.
Цель: отображение будущих событий пользователя.
Проблема: я застрял при получении авторизации пользователя. В настоящее время скрипт отображает мои события. Вместо этого я хочу, чтобы скрипт отображал события пользователя (который обращается к веб-приложению).
Я нашел этот образец в документации. Эта функция получает список событий пользователя. https://developers.google.com/calendar/quickstart/apps-script
Затем я написал основной файл index.html для отображения пользователю строки, заполненной этой функцией.
index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<script>
function getEventsOnClick() {
google.script.run.withSuccessHandler(changeDisplay).listAllEvents();
}
function changeDisplay(display) {
var div = document.getElementById('output');
div.innerHTML = display;
}
</script>
<div id="output"> Hello! </div>
<button onclick="getEventsOnClick()">Run Function</button>
</body>
</html>
code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function listAllEvents() {
var calendarId = 'primary';
var now = new Date();
var display = ""
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
maxResults: 2500,
});
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.start.date) {
// All-day event.
var start = new Date(event.start.date);
var end = new Date(event.end.date);
display = display + 'Start: ' + start.toLocaleDateString() + '; End: ' + end.toLocaleDateString() + ". ";
} else {
var start = new Date(event.start.dateTime);
var end = new Date(event.end.dateTime);
display = display + 'Start: ' + start.toLocaleString() + '; End: ' + end.toLocaleString() + ". ";
}
}
} else {
display = 'No events found.';
}
Logger.log("%s", display)
return display
}
Опять же, с этим кодом все в порядке. Он отображает события, как ожидалось. Проблема в том, что он отображает мои события, а не пользователя. Поэтому, если я дам URL-адрес пользователя для приложения, я хочу, чтобы это приложение запрашивало авторизацию и отображало его событие. Как бы я это сделал?
Спасибо!