Изменение существующего события календаря из ввода HtmlService - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь добавить ссылку «Зарегистрироваться» в событие Календаря Google, где после нажатия пользователю предлагается через HtmlService отправить свой адрес электронной почты.Затем их адрес электронной почты добавляется к событию.

Вот аналогичный пример .То, что я хотел бы сделать по-другому, - это использовать HtmlService, чтобы пользователь ввел свой адрес электронной почты, который затем передается обратно в GAS для добавления в рассматриваемое событие календаря.Таким образом, они могут выбрать адрес электронной почты, который они хотят (вместо того, что Session.getActiveUser (). GetEmail () возвращает), чтобы зарегистрироваться.(Под регистрацией я имею в виду добавление в список гостей - им все еще нужно принять приглашение, но это нормально).

Возможно ли это?Я не вижу никаких примеров этого, так что, может быть, есть лучший способ?

Я начинаю рвать на себе какие у меня маленькие волосы.Я включил мой последний пример кода, где я передаю объект события в шаблон HTML.Это не выдает ошибку, но это также не работает.Заранее спасибо!!

Code.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>

1 Ответ

0 голосов
/ 13 февраля 2019

В вашем html-файле нет скриптлетов, поэтому вам не нужно оценивать шаблон.Я добавил еще 2 поля ввода для calId и eventId.Они заменяются в HTML перед обслуживанием.Затем идентификатор события и идентификатор Cal передаются обратно в объект формы.

<!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)
}
...