我成功地将GCalendar集成到Gsheet中以创建事件。提交Google表单后,应用脚本会向我的日历和来宾日历发送邀请。
我在自动化和重复条目方面遇到问题。当出现新行时,脚本不会运行-在编辑和表单提交上都尝试过-并且当我强制它运行时,它将重新计划所有过去的事件。
这是我的代码
module
我正在寻找一种解决方案来改进我的脚本,以使其在每次完成新提交后都运行,并且不会基于旧条目(以前的行)发送邀请。
我成功地将GCalendar集成到Gsheet中以创建事件。提交Google表单后,应用脚本会向我的日历和来宾日历发送邀请。
我在自动化和重复条目方面遇到问题。当出现新行时,脚本不会运行-在编辑和表单提交上都尝试过-并且当我强制它运行时,它将重新计划所有过去的事件。
这是我的代码
module
我正在寻找一种解决方案来改进我的脚本,以使其在每次完成新提交后都运行,并且不会基于旧条目(以前的行)发送邀请。
您正在基于Google表单的表单响应创建日历事件。代码运行时,它将为所有响应创建事件,而不仅限于最近的响应。
解决此问题的措施有两个:
注意:您的函数现在称为CreateEvent(e)
。 e
属性将自动为您提供对事件对象的访问。
以下代码未经测试,但它指示了要采用的方法。
`
function CreateEvent(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Logger.log(JSON.stringify(e)); // DEBUG
// identify Calendar
var eventCal = CalendarApp.getCalendarById('<insert id >');
// get the response data
var summary = e.values[2];
var startTime = e.values[7];
var endTime = e.values[8];
var guests = e.values[1];
var description = e.values[3];
var location = e.values[5];
var event = {
'location': location,'description': description,'guests':guests +',','sendInvites': 'True',}
// create the event.
eventCal.createEvent(summary,startTime,endTime,event)
}
onFormSubmit
使用可安装的触发器onFormSubmit
来触发功能很重要。请参阅Managing triggers manually的文档,以获取逐步的“操作方法”说明。
完成设置后,您的屏幕应该看起来像这样。
请注意,函数名称(CreateEvent
)并不表示您正在使用事件对象-可以-触发器只是选择基本名称。但是,实际上将函数称为CreateEvent(e)
非常重要,这样它才能访问事件对象。