【问题标题】:setHours() Error when Creating a Google Calendar Event from Imported Date Coming From Spreadsheet - Apps Script从来自电子表格的导入日期创建 Google 日历事件时出现 setHours() 错误 - Apps 脚本
【发布时间】:2015-02-20 18:42:52
【问题描述】:

我有一个向用户请求事件标题和开始时间的表单。然后将信息插入到 Google 电子表格中。我编写了一个脚本,将这些信息导入谷歌日历。但是,我希望每个输入的事件的结束时间都比开始时间晚 2 小时。是否有捷径可寻?这是我目前所拥有的。

var title = column[3];
var startDate = column[5];        // 5th column in spreadsheet "Start Date and Time"

cal1.createEvent(title, new Date(startDate), new Date(startDate.setHours(startDate.getHours() + 2));

我收到错误:

TypeError: Cannot find function sethours in object Fri Feb 27 2015 08:00:00 GMT-0500 (EST

【问题讨论】:

  • 看起来不错,您是否尝试过在不同的变量中生成这些日期,以便更容易找到错误。同样在错误中它说“sethours”(不是大写的 H)在你的代码中它说 setHours,你的代码中还有其他地方在使用这个函数吗?
  • 你的问题是你的结束时间不是日期类型,我想。你能告诉我们你的开始日期吗?

标签: javascript datetime google-apps-script google-sheets google-calendar-api


【解决方案1】:

从电子表格返回的 startDate 值没有被强制转换为日期类型。您需要在其上使用new Date() 以使其成为日期:

var startDate = column[5];        // 5th column in spreadsheet "Start Date and Time"
startDate = new Date(startDate);

这是我运行的一个测试函数,对代码进行了一些更改:

function testIt() {

  var title = column[3];
  var startDate = column[5];        // 5th column in spreadsheet "Start Date and Time"

  startDate = new Date(startDate);
  var startHr = startDate.getHours();

  var eventEndTime = new Date(startDate);
  eventEndTime.setHours(startHr + 2);

  cal1.createEvent(title, startDate, eventEndTime);
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多