【问题标题】:Modifying an existing Calendar Event from HtmlService input从 HtmlService 输入修改现有日历事件
【发布时间】:2019-02-12 22:51:02
【问题描述】:

我正在尝试将“注册”链接添加到 Google 日历活动,点击该链接后,系统会通过 HtmlService 提示用户提交他们的电子邮件地址。然后将他们的电子邮件地址添加到活动中。

这里是a similar example。我想做的不同是使用 HtmlService 让用户输入他们的电子邮件地址,然后将其传递回 GAS 以添加到相关日历事件中。这样他们就可以选择他们想要的电子邮件(而不是 Session.getActiveUser().getEmail() 返回的任何电子邮件)进行注册。 (通过注册,我的意思是被添加到来宾列表中 - 他们仍然必须接受邀请,但这很好)。

这可能吗?我没有看到任何这样的例子,所以也许有更好的方法?

我开始扯掉我的头发了。我已经包含了我最新的示例代码,其中我将事件对象传递到 HTML 模板中。它没有抛出错误,但它也不起作用。先感谢您!!

代码.gs:

function doGet(event) {
  //    // shorten the event parameter path;
 var param = event.parameter;
//    // get the calendar event id passed in the query parameter
 var eventId = param.eId;
 var calId = param.calId;
 var cal = CalendarApp.getCalendarById(calId);
 var t = HtmlService.createTemplateFromFile('Index');
 t.eObj = cal.getEventById(eventId);
 return t.evaluate();
}

function addEmail(emObj,myForm){
  var guestEmail = myForm.user;
  emObj.addGuest(guestEmail)
}

和Index.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function update() {
        alert("Success!");
      }

    </script>
  </head>
  <body>
    <form id="myForm">
      <input id="userEmail" name="user" type="text" />
      <input type="button" value="Submit" onClick="google.script.run.withSuccessHandler(update).addEmail(eObj,this.form)" />
    </form>
 </body>
</html>

【问题讨论】:

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


    【解决方案1】:

    您的 html 文件中没有 scriptlet,因此您不需要评估模板。我为 calId 和 eventId 添加了另外 2 个输入字段。在提供服务之前,它们会在 HTML 中被替换。然后在表单对象中传回事件 ID 和 Cal ID。

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
        <script>
          function update() {
            alert("Success!");
          }
    
        </script>
      </head>
      <body>
        <form id="myForm">
    
          <input id="userEmail" name="user" type="text" />
    
          <input name="calId" type="text" style="display:none"
            value="zzz_calID_zzz"/>
          <input name="eventId" type="text" style="display:none"
            value="zzz_eventID_zzz"/>
    
    
          <input type="button" value="Submit" onClick="google.script.run
                .withSuccessHandler(update)
                .addEmail(this.form)" />
        </form>
     </body>
    </html>
    

    doGet:

    function doGet(event) {
      //    // shorten the event parameter path;
     var param = event.parameter;
    //    // get the calendar event id passed in the query parameter
     var eventId = param.eId;
     var calId = param.calId;
    
     var t = HtmlService.createHtmlOutputFromFile('Index').getContent();
    
     t = t.replace('zzz_calID_zzz',calId);
     t = t.replace('zzz_eventID_zzz',eventID);
    
     return HtmlService.createHtmlOutput(t);
    }
    

    服务器代码:

    function addEmail(myForm){
    
      var cal = CalendarApp.getCalendarById(myForm.calId);
      var event = cal.getEventById(myForm.eventId);
      var guestEmail = myForm.user;
    
      event.addGuest(guestEmail)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2013-07-19
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多