我正在使用与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”。
我不知道这是代码问题还是格式问题。如果有人可以提供帮助,将不胜感激!
答案 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 :(得分:0)
您需要查看实用程序服务...那里有一个“格式化日期”方法,可让您将日期格式化为所需的格式。