从Google表单到Google日历 - 日期和时间问题

时间:2014-04-01 20:42:44

标签: forms google-sheets

我正在尝试修改我在网上找到的一个脚本,它似乎使该活动成为一整天的活动,我不想要,我希望它只是表格/电子表格中指定的时间。

电子表格位于此处 - https://docs.google.com/spreadsheet/ccc?key=0ApxazoOhNSK-dGFvZVhVOTQ1X3F3aWh4QTh3Wm9sbFE#gid=0

这是我正在使用的脚本,但它没有添加......

//this is the ID of the calendar to add the event to, this is found on the calendar settings page of the calendar in question
var calendarId = "<removed for privacy>";

//below are the column ids of that represents the values used in the spreadsheet (these are non zero indexed)
var startDtId = 4;
var endDtId = 4;
var titleId = 2;
var titleId2 = 3;
var descId = 7;
var tstart = 4;
var tstop = 5;
var formTimeStampId = 1;

function getLatestAndSubmitToCalendar() {
  var start = new Date(sheet.getRange(lr,tstart,1,1).getValue());
  var end = new Date(sheet.getRange(lr,tstop,1,1).getValue());
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();
  var lr = rows.getLastRow();
  var subOn = "Submitted on :"+sheet.getRange(lr,formTimeStampId,1,1).getValue()+" by "+sheet.getRange(lr,titleId,1,1).getValue();
  var desc = "Comments: "+sheet.getRange(lr,descId,1,1).getValue()+"\n"+subOn;
  var title = sheet.getRange(lr,titleId,1,1).getValue()+" "+sheet.getRange(lr,titleId2,1,1).getValue();
    createEvent(calendarId,title,start,end,desc);
}

  function createEvent(calendarId,title,start,end,desc) {
  var cal = CalendarApp.getCalendarById(calendarId);
  var start = new Date(sheet.getRange(lr,tstart,1,1).getValue());
  var end = new Date(sheet.getRange(lr,tstop,1,1).getValue());
  var loc = 'Computer Center';

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

原始文章位于此处:http://bruceburge.com/2012/09/05/automatically-adding-events-to-a-google-calendar-from-a-google-form-submission/

我似乎无法让所有日期工作......如果我使用原始代码它工作正常,但时间是一整天,而不是指定的时间......我似乎打破了它,试图让它发挥作用...任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:0)

这比我简单得多......我只是删除了他的一些线条(那些将小时和分钟设置为0的线条。一旦我删除了它并改变了一些东西,我得到以下内容大:

//this is the ID of the calendar to add the event to, this is found on the calendar settings page of the calendar in question
var calendarId = "alcc.ccenter@gmail.com";

//below are the column ids of that represents the values used in the spreadsheet (these are non zero indexed)
var startDtId = 4;
var endDtId = 5;
var titleId = 2;
var titleId2 = 3;
var descId = 7;
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.
  var endDt = sheet.getRange(lr,endDtId,1,1).getValue();
  //set endDt to last hour and minute of the day
  var subOn = "Added :"+sheet.getRange(lr,formTimeStampId,1,1).getValue()+" by: "+sheet.getRange(lr,titleId,1,1).getValue();
  var desc = "Comments :"+sheet.getRange(lr,descId,1,1).getValue()+"\n"+subOn;
  var title = sheet.getRange(lr,titleId,1,1).getValue()+" - "+sheet.getRange(lr,titleId2,1,1).getValue();
    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 = 'Computer Centre';

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

我的表单包含以下列:时间戳,名称,缺席,开始,结束,原因,评论。他们不需要是单词,但我将它们改为一个单词标题,因为我试图遵循的视频示例......但上面的代码可以创造奇迹。

答案 1 :(得分:0)

我不得不修改窗体处理日期的方式以适应日历

function createEvent() {
    var form = FormApp.getActiveForm();
    var cal = CalendarApp.getDefaultCalendar();
    var responses = form.getResponses();
    var len = responses.length;
    var last = len – 1;
    var items = responses[last].getItemResponses();
    var email = responses[last].getRespondentEmail();
    var name = items[0].getResponse();
    var bring = items[1].getResponse();
    var date = items[2].getResponse();
    Logger.log(date);
    var replace = date.replace(/-/g,”/”);
    Logger.log(replace);
    var start = new Date(replace);
    Logger.log(‘start ‘+start);

    //Logger.log(newStart.getHours());
    var endHours = 2+0+start.getHours();
    
    //Logger.log(start.getDay());
    var day = start.getDate();
    var minutes = start.getMinutes();
    var year = start.getFullYear();
    var month = start.getMonth();
    var hours = start.getHours();
    
    var d = new Date(year, month, day, endHours, minutes);
    Logger.log(d);

    var event = cal.createEvent(‘Class Party ‘+name+’ brings ‘+bring, start, d)
        .addGuest(email)
        .setDescription(name+’ you will be bringing ‘+bring+’ to the party.’);

    GmailApp.sendEmail(email, name + ’ a Google Calendar invite has been created for you’, name + ’ You filled out the Google Form for the date of ‘ + start + ’. Check your Google Calendar to confirm that you received the invite.\n’);
}