使用AppScript连接Google日历和Google表格时出现重复事件的问题

我成功地将GCalendar集成到Gsheet中以创建事件。提交Google表单后,应用脚本会向我的日历和来宾日历发送邀请。

我在自动化和重复条目方面遇到问题。当出现新行时,脚本不会运行-在编辑和表单提交上都尝试过-并且当我强制它运行时,它将重新计划所有过去的事件。

这是我的代码

module

我正在寻找一种解决方案来改进我的脚本,以使其在每次完成新提交后都运行,并且不会基于旧条目(以前的行)发送邀请。

wx_1985 回答:使用AppScript连接Google日历和Google表格时出现重复事件的问题

您正在基于Google表单的表单响应创建日历事件。代码运行时,它将为所有响应创建事件,而不仅限于最近的响应。

解决此问题的措施有两个:

  1. 使用可安装的触发器`onFormSubmit触发该功能。
  2. 使用Event Objects捕获表单响应值,并根据这些值更新日历。

注意:您的函数现在称为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)非常重要,这样它才能访问事件对象。


enter image description here

本文链接:https://www.f2er.com/3148076.html

大家都在问