在谷歌电子表格中连接日期和时间

use*_*413 5 javascript google-sheets google-apps-script

我有一个脚本可以将电子表格中的事件导入日历:

function caltest1() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 3;   // Number of rows to process
  var dataRange = sheet.getRange(startRow, 1, numRows, 5);
  var data = dataRange.getValues();
  var cal = CalendarApp.getDefaultCalendar();
  for (i in data) {
    var row = data[i];
    var title = row[0];  // First column
    var desc = row[1];       // Second column
    var tstart = row[2];
    var tstop = row[3];
    var loc = row[4];
    //cal.createEvent(title, new Date("March 3, 2010 08:00:00"), new Date("March 3, 2010     09:00:00"), {description:desc,location:loc});
    cal.createEvent(title, tstart, tstop, {description:desc,location:loc});
 }
}
Run Code Online (Sandbox Code Playgroud)

如果我的电子表格包含以下数据,该脚本可以正常工作:

Title      Description    Start               Stop                  Channel
Mr Dear    no drinks      5/6/2014 20:55:00   5/6/2014 21:57:00     what ever
Run Code Online (Sandbox Code Playgroud)

但是如果我创建自己的日期= CONCATENATE($ D4,"",$ G4),它就不起作用,因为D4有一个日期而G4的时间合并为一个单元格的日期和时间.我想是因为它感觉到连接创建了纯文本而不是时间格式,但我该如何解决它?

Ser*_*sas 11

在电子表格中,日期具有整数的原始值,表示自1899年12月31日以来的天数,时间是十进制值,即一天的分数(6小时=一天的1/4,例如0.25天).

因此,当您在电子表格中添加DATE + TIME(整数+小数)时,您将获得一个完整的日期和时间.

所以答案(正如你在另一个答案的评论中注意到的那样)在逻辑上是添加两个值.这实际上是电子表格构建的原因!(使日期和时间易于使用)

=D2+E2在新列中使用该公式,您将获得一个可在JavaScript中直接使用的完整日期对象.

在Javascript日期和时间是相同的对象,没有时间对象没有日期,没有时间没有日期:它们的原始值是从1970年1月1日午夜(这是一个整数)计算的毫秒数.

  • 由于还有一些似乎是错误的答案,这里有一个示例公式作为示例:=DATE(2018,3,29) + TIME(21,17,19) (2认同)