设置带有两个日期的单元格值

时间:2019-06-28 20:01:27

标签: google-apps-script google-sheets-api

我正在使用与Google日历进行交互的Google App脚本创建一个Google Spreadsheet脚本。我正在做的是通过关键字搜索特定的Calendar事件,从该事件中提取开始和结束日期,然后目标是将这两个日期显示在一个电子表格单元格中(主要是为了提高可读性)清酒)。换句话说,该单元格应类似于“ 07/14/19-07/20/19”。我的代码如下:

function listEvents() {
  var id = "THE ID FOR MY CALENDAR IS HERE";   
  var cal = CalendarApp.getCalendarById(id);
  var startPeriod = new Date();
  startPeriod.setHours(0, 0, 0, 0);
  var endPeriod = new Date(startPeriod);
  endPeriod.setDate(endPeriod.getDate() + 1000);

  var sheet = SpreadsheetApp.getActiveSheet();
  var gig = sheet.getRange(1,1);
  var gigName = gig.getValue(); // get the gig name so you can search for it

  var events = cal.getEvents(startPeriod, endPeriod, {search:gigName});

// find the start date of each event in the calendar
  var starttime = [];
  for (var i = 0; i < events.length; i++) { 
    starttime.push([events[i].getStartTime()]);    
  }

  // find the end date of each event in the calendar
  var endtime = [];
  for (var i = 0; i < events.length; i++) { 
    endtime.push([events[i].getEndTime()]); 

  var cell = sheet.getRange("E5");
  cell.setValue(starttime+endtime);

这是可行的。我可以在一个单元格中设置starttime,在另一个单元格中设置endtime,它们看起来都很漂亮('07 / 14/19','07/14/19'),但是当我这样做时cell.setValue(starttime+endtime);单元格的格式更改为这种混乱的内容Sun Jul 14 2019 00:00:00 GMT-0500 (CDT)Sat Jul 20 2019 00:00:00 GMT-0500 (CDT)重申一下,我希望它看起来像是“ 07/14 / 19-07 / 20/19”。

我不知道这是代码问题还是格式问题。如果有人可以提供帮助,将不胜感激!

2 个答案:

答案 0 :(得分:1)

要求:

要在.setValue()内串联的格式化日期。


解决方案:

在将日期连接到.setValue()之前,格式化日期。使用下面的三行代码替换脚本中当前的代码。

//format the start time
starttime.push([Utilities.formatDate(events[i].getStartTime(), "GMT", "dd/MM/yy")]);

//format the end time
endtime.push([Utilities.formatDate(events[i].getEndTime(), "GMT", "dd/MM/yy")]);

然后您的.setValue()应该看起来像这样:

cell.setValue(starttime + ' - ' + endtime);

示例:

function listEvents() {
  var id = "THE ID FOR MY CALENDAR IS HERE";   
  var cal = CalendarApp.getCalendarById(id);
  var startPeriod = new Date();
  startPeriod.setHours(0, 0, 0, 0);
  var endPeriod = new Date(startPeriod);
  endPeriod.setDate(endPeriod.getDate() + 1000);

  var sheet = SpreadsheetApp.getActiveSheet();
  var gig = sheet.getRange(1,1);
  var gigName = gig.getValue(); // get the gig name so you can search for it

  var events = cal.getEvents(startPeriod, endPeriod, {search:gigName});

  // find the start date of each event in the calendar
  var starttime = [];
  for (var i = 0; i < events.length; i++) { 
    starttime.push([Utilities.formatDate(events[i].getStartTime(), "GMT", "dd/MM/yy")]); 
  }

  // find the end date of each event in the calendar
  var endtime = [];
  for (var i = 0; i < events.length; i++) { 
    endtime.push([Utilities.formatDate(events[i].getEndTime(), "GMT", "dd/MM/yy")]);
  }

  var cell = sheet.getRange("E5");
  cell.setValue(starttime + ' - ' + endtime);

参考:

  1. Utilities.formatDate

答案 1 :(得分:0)

您需要查看实用程序服务...那里有一个“格式化日期”方法,可让您将日期格式化为所需的格式。