>source

Apps Script 및 Web Development를 처음 사용합니다. 간단한 앱을 시작하면 좋겠다고 생각했습니다.

목표 : 사용자의 향후 이벤트를 표시합니다.

문제 : 사용자 인증을 받고 있습니다. 현재 스크립트가 내 이벤트를 표시하고 있습니다. 대신 스크립트가 사용자 (웹 앱에 액세스하는 사람) 이벤트를 표시하기를 원합니다.

문서에서이 샘플을 찾았습니다. 이 함수는 사용자의 이벤트 목록을 가져옵니다. 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을 제공하면이 앱이 인증을 요청하고 이벤트를 표시하기를 원합니다. 어떻게하면 되나요?

감사합니다!


  • 답변 # 1

    앱을 배포 할 때는 자신이 아닌 사용자로 실행하도록 선택해야합니다. (자신이 기본값이므로)

관련 자료

  • 이전 db2 - UNION ALL 문이 255 개 이상인 SQL 수정
  • 다음 coq - 논리 - excluded_middle_irrefutable