在Google Script中将持续时间添加到开始日期

时间:2015-06-25 00:15:35

标签: javascript google-apps-script

我正在处理一个脚本(不是我的),它采用M/D/Y HH:MM:SS格式的两个日期(开始,结束)并在Google日历中创建一个事件。

现在,我试图将表单更改为具有一个日期(开始)和一个小时持续时间(结束)选​​项。我希望将持续时间添加到开始日期,然后创建偶数。

我让脚本部分工作,而不是显示为小时的持续时间,它显示为分钟。

我尝试将endDt乘以60(startDt + (endDt * 60))和其他一些东西,但到目前为止还没有任何效果。

我认为这是代码的相关部分。最后一行是我的。

  var startDt = sheet.getRange(lr,startDtId,1,1).getValue();
  var endDt = sheet.getRange(lr,endDtId,1,1).getValue();
  var endDt = startDt + endDt;

任何帮助将不胜感激。如果需要,这是整个代码:

var calendarId = "CALENDAR_ID";
var startDtId = 4;
var endDtId = 5;
var titleId = 2;
var titleId2 = 3;
var descId = 6;
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();
  var endDt = sheet.getRange(lr,endDtId,1,1).getValue();
  var endDt = startDt + endDt;
  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 = 'LOCATION';

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

1 个答案:

答案 0 :(得分:1)

当我使用调试器运行该代码时,输​​出如下所示:

Debugger

您会看到变量endDt如下所示:

"Thu Jan 15 2015 20:16:19 GMT-0500 (EST)2"

最后见“2”。这没有做任何补充,它连接了文本。另外,您会注意到,中间列显示了变量类型。 sheet是一个对象。 numRows是一个数字。 startDt是日期,endDt是字符串。您必须知道每一行的变量类型。 Javascript“强制”变量类型。所以你的“日期”可能是一行上的字符串,另一行上的日期类型。

如果您想以小时为增量调整结束日期,并相对于开始时间更改事件结束时间,则可以使用JavaScript setHours()方法。

function getLatestAndSubmitToCalendar() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet11'); //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();
  var endDt = sheet.getRange(lr,endDtId,1,1).getValue();
  var endDt = new Date(endDt);
  var endDtHour = endDt.getHours();
  var startHour = startDt.getHours();

  var newEndingHr = Number(startHour) + Number(endDt);
  endDt.setHours(newEndingHr);

  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);
};