将数据从Google电子表格程序发送到Google日历

时间:2015-09-21 17:53:08

标签: javascript google-apps-script

这是我的情况。 用户填写事件预订表单,提交的表单存储在谷歌电子表格中,我已同步到谷歌日历,以便自动将数据发送给它。 除了活动时间可能发生冲突之外,一切都很好。 当客户在2015年3月13日上午10点00分预订活动中心时,如果其他用户输入相同的日期和时间,则不应接受该条目。

总结一下,我想避免预订事件的冲突。谢谢大家。

这是我的剧本。

var calendarId = "mycalenderid";

//below are the column ids of that represents the values used in the spreadsheet (these are non zero indexed)
var startDtId = 9;
var endDtId = 10;
var titleId = 6;
var descId = 11;
var formTimeStampId = 1;

function getLatestAndSubmitToCalendar() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();
  var lr = rows.getLastRow();
  var startDt = sheet.getRange(lr,startDtId,1,1).getValue();

  //set to first hour and minute of the day.
  //startDt.setHours(0);
  //startDt.setMinutes(00);

  var endDt = sheet.getRange(lr,endDtId,1,1).getValue();
  //set endDt to last hour and minute of the day
  //endDt.setHours(23);
 //endDt.setMinutes(59);

var subOn = "Submitted on:"+sheet.getRange(lr,formTimeStampId,1,1).getValue();
  var desc = "Added by :"+sheet.getRange(lr,descId,1,1).getValue()+"\n"+subOn;

  var title = sheet.getRange(lr,titleId,1,1).getValue()+"DIA";
    createEvent(calendarId,title,startDt,endDt,desc);
}
  
  function createEvent(calendarId,title,startDt,endDt,desc) {
  var cal = CalendarApp.getCalendarById(calendarId);

  var start = new Date(startDt);

  var end = new Date(endDt);

  var loc = 'Script Center';

  var event = cal.createEvent(title, start, end, {
      description : desc,
      location : loc
  });
    
    
};

1 个答案:

答案 0 :(得分:1)

这是你正在尝试做的伪代码:

function findEvent(desiredDateTime)
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
  var range = sheet.getDataRange();
  var data = range.getValues();
  var lRow = range.getLastRow();

  var flag = true;
  var count = 0;
  while (flag == true || count < lRow)
  {
    if (desiredDateTime >= data[count][startDtId] && desiredDateTime <= data[count][endDtId])
    {
      flag = false;
    }
    else
    {
      count++;
    }
  }

  if (flag == true)
  {
    //Call function to add event
  }else{
    //Tell user desired date-time is not available.
    //If you're asking for user's email address, 
    //simplest approach would be to send an email.
  }
}

您可能还需要修改代码的其他部分以适应这一点,但这不应该太难。希望这能为您提供一定的指导方针。