【问题标题】:Google Calendar Authorization Apps Script - Standalone Web AppGoogle 日历授权应用程序脚本 - 独立网络应用程序
【发布时间】:2019-05-21 22:09:09
【问题描述】:

我是 Apps 脚本和 Web 开发的新手。我认为制作一个简单的应用程序会很好。

目标:显示用户未来的事件。

问题:我一直无法获得用户授权。目前,脚本正在显示我的事件。相反,我希望脚本显示用户(正在访问网络应用程序)的事件。

我从文档中找到了这个示例。此函数获取用户的事件列表。 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>

代码.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,那么我希望该应用程序请求授权并显示他们的事件。我该怎么做?

谢谢!

【问题讨论】:

    标签: google-apps-script web-applications google-calendar-api


    【解决方案1】:

    当您部署应用程序时,请确保您选择以用户而不是您自己的身份执行。 (因为你自己是默认的)。

    【讨论】:

    • 谢谢!谷歌在幕后做了很多事情!我没有意识到 Apps 脚本编辑器非常强大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    相关资源
    最近更新 更多