首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我做错了什么,我一直收到第12行不好的消息(从工作表到日历)

我做错了什么,我一直收到第12行不好的消息(从工作表到日历)
EN

Stack Overflow用户
提问于 2019-10-31 05:34:00
回答 2查看 94关注 0票数 0

我正在尝试将事件从工作表添加到日历中,我总是在最后一行代码中出错

代码语言:javascript
复制
function addevents() {
  var ss = SpreadsheetApp.getActiveSheet();
  var lr = ss.getLastRow();
  var cal = CalendarApp.getCalendarById("maytavbus.com_jm741jospf0kv3f2se2kpo88i0@group.calendar.google.com")
  var data = ss.getRange("A1:C" + lr).getValues();
  for(var i = 0; i < data.length; i++) {
    cal.createAllDayEvent(data[i][0], data[i][1], data[i][2])
  }
}

我试着这样做,它仍然告诉我,开始必须在结束之前,在表中是这样的

代码语言:javascript
复制
function addevents() {
  var ss = SpreadsheetApp.getActiveSheet();
  var lr = ss.getLastRow();
  var cal = CalendarApp.getCalendarById("maytavbus.com_jm741jospf0kv3f2se2kpo88i0@group.calendar.google.com");

  var data = ss.getRange("A1:C" + lr).getValues();

  for(var i=0; i < data.length; i++) {
    var title = data[i][0];
    var startDate = new Date(data[i][1]); 
    var endDate = new Date(data[i][2]);
    cal.createAllDayEvent(title, startDate, endDate);
  }
}

以下是工作表中的数据:

代码语言:javascript
复制
title startDate endDate 
FAS8-school closed 11/1/2019 0:00:00 11/1/2019 0:00:00 
0647-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SEM1-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SME2-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SMC3-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SY2-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SY5-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00
EN

回答 2

Stack Overflow用户

发布于 2019-10-31 15:07:33

您可能想要尝试:

cal.createAllDayEvent(data[i][0], new Date(data[i][1]), new Date(data[i][2]));

我猜最后两个是日期。

票数 0
EN

Stack Overflow用户

发布于 2019-10-31 23:31:30

正如我在@Cooper answer上的评论中所看到的,startDate和endDate是相同的。这就是你得到错误Event start date must be before event end date. (line 11, file "Code")的原因。

如果您希望事件仅持续一天,则应仅提供一个日期,如here中所示。仅当事件持续一天以上时,才应使用createAllDayEvent(title, startDate, endDate)

如果某些事件只跨越一天,而另一些则跨越多天,则可以添加比较两个日期的条件,以便根据该条件使用不同的方法。

因此,您可以尝试更改此设置:

代码语言:javascript
复制
for(var i=0; i < data.length; i++) {
  var title = data[i][0];
  var startDate = new Date(data[i][1]); 
  var endDate = new Date(data[i][2]);
  cal.createAllDayEvent(title, startDate, endDate);
}

要这样做:

代码语言:javascript
复制
for(var i = 0; i < data.length; i++) {
  var title = data[i][0];
  var startDate = new Date(data[i][1]);
  var endDate = new Date(data[i][2]);
  if(startDate.getFullYear() == endDate.getFullYear() && startDate.getMonth() == endDate.getMonth() && startDate.getDate() == endDate.getDate()) {
    cal.createAllDayEvent(title, startDate);
  } else {
    cal.createAllDayEvent(title, startDate, endDate);
  }
}

我希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58633949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档