我正在尝试向Google日历活动添加“注册”链接,点击该链接后,系统会通过HtmlService提示用户提交其电子邮件地址。然后将他们的电子邮件地址添加到活动中。
这里是a similar example。我想做不同的事情是使用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>
答案 0 :(得分:0)
您的html文件中没有脚本,因此您无需评估模板。我为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>
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)
}