【问题标题】:Google Script to Submit Form to Calendar Event谷歌脚本提交表单到日历事件
【发布时间】:2021-11-23 10:32:00
【问题描述】:

学校老师使用我的个人 Google 帐户创建表格并将日历发布到我的班级网站。

努力让孩子(无法访问 Google Apps)尽可能快速轻松地安排补考using this form.

快速而肮脏的胜利是将他们的表单提交添加到我的日历中,作为全天活动,并在描述字段中提供详细信息。然后,我可以在请求的特定时间查看和编辑事件(我在表单上仅提供某些时间选项作为下拉选择项。)

一个漂亮而优雅的解决方案是让脚本在下拉菜单中指示的日期和时间编写事件,但我认为这需要巫术......

表单可以很好地写入对电子表格的响应,并且电子邮件通知也可以正常工作,但无法创建日历事件。

将继续尝试查找/学习必要的代码,但非常感谢您朝着正确的方向前进。

干杯,

【问题讨论】:

  • * 这需要巫术。* ... :-) 实际上并非如此,请使用此标签搜索此站点,您会找到一些从电子表格数据创建事件的脚本示例,并且将是一个简单的选择。

标签: google-apps-script google-calendar-api form-submit


【解决方案1】:

这是一个“魔法礼物”,因为您是一名教师(我也是)而不是一名程序员(我也不是),希望能满足您的需求。

编辑:我在说明中添加了提交日期/时间

function createCalEvent(e) {
  Logger.log(e);
  // this will return something like this :
  /*
  {values=[11/9/2014 22:30:00, serge, test descr, 11/7/2014, Before school | 7:30], 
  namedValues={Your Full Name=[serge], Work to Make Up=[test descr], Date You Will Make Up Assignment=[11/7/2014], 
  Makeup Time=[Before school | 7:30], Timestamp=[11/9/2014 22:30:00]}, range=Range, source=Spreadsheet, authMode=FULL}
  */
  var cal = CalendarApp.getCalendarById("h22nevo15tm0nojb6ul4hu7ft8@group.calendar.google.com");// replace with the right calendar ID, this one is for test (and is public)
  var name = e.namedValues["Your Full Name"][0];
  var descr = e.namedValues["Work to Make Up"][0];
  var submitTime = e.namedValues["Timestamp"][0];
  var date = e.namedValues["Date You Will Make Up Assignment"][0].split('/');
  var time = e.namedValues["Makeup Time"][0].split('|')[1].split(':');
  Logger.log(name+' '+descr+' '+date+' '+time); // this will return  serge test descr 11,7,2014  7,30
  var startTime = new Date(date[2],date[0]-1,date[1]);
  startTime.setHours(time[0],time[1],0,0);
  endTime = new Date(startTime.getTime()+3600000); //assuming event is 1 hour long
  Logger.log('start='+startTime+'  end='+endTime);
  cal.createEvent('name = '+name, startTime, endTime, {'description':descr+' (subimitted on '+submitTime+')'});
}

您必须设置一个触发器(在提交表单时)以在提交表单时触发该功能

重要提示:不要在未发送表单的情况下从脚本编辑器尝试此代码,否则将无法正常工作!!! (显然,e 将是未定义的)

【讨论】:

  • 先生,您是一位学者,一位绅士。好东西,非常感谢!如果你使用 PayPal,让我给你买一三杯咖啡!
  • 感谢您的建议,但没有必要...如果您满意,那么我也很高兴:-) 请考虑接受答案,谢谢。
  • 您将如何邀请与会者和/或发送通知?谢谢。
猜你喜欢
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多