繁体   English   中英

电子表格应用转换Date()

[英]Spreadsheet App converting Date()

问题:电子表格无法将输入日期识别为Date(),因此我无法在Apps脚本中从中获取.getTime()。

问题:您知道为什么吗?

结果:这是我正在运行的脚本的一部分:

dates.map(function(inp) {
  if (inp != undefined && inp !== ""){
    inp = new Date(inp.getTime() - (date.getTimezoneOffset()*60000);
    return inp
  }
});

其中dates是指范围: dates = sheet.getRange(2,1, lastR, 1).getValues();

当前,此范围的手动输入值为“ 2017-05-20”,电子表格会自动将该日期识别为“ 2017年5月20日星期六00:00:00 GMT + 0200(CEST)”

错误内容如下:

TypeError:在对象Sat May 20 2017 00:00:00 GMT + 0200(CEST)中找不到函数getTime。 (第86行,文件“代码”)详细信息关闭

我在整个脚本中尝试了100万种方法,以使Spreadsheet停止将输入值自动转换为日期,以便至少可以创建时间戳或类似内容。 有谁知道为什么要这么做吗?

即使您在一个getValues()范围内调用getValues() ,它仍将是一个数组数组。

令人困惑的是,GAS会尝试提供帮助,并在单元素数组中显示唯一的值。

从行中提取第一个元素应该可以解决此问题。

dates.map(function(row) {
  var inp = row[0];
  if (inp != undefined && inp !== ""){
    inp = new Date(inp.getTime() - (date.getTimezoneOffset()*60000);
    return inp
  }
});

如果您坚持通过Array.prototype.map()完成所有操作,则以下代码可能会起作用。 我忽略了您的日期操作逻辑,而是在单元格中的日期上增加了5天。 为了更新值,您必须将Array.prototype.map()返回的值分配给变量。 另外,对空字符串和“ undefined”进行2次单独检查是多余的,因为JavaScript实际上认为它们都为“ false”(不幸的是,这同样适用于0,所以要小心)

       function getDates() {

          var ss = SpreadsheetApp.getActiveSpreadsheet();
          var sheet = ss.getSheets()[0];
          var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1);
          var values = range.getValues();

          var newValues = values.map(function(row) {

          var newRow = row.map(function(value){

          if (value){

          value = new Date(value.getTime() + 3600000*24*5) // adding 5 days

          return value;

        }

   });

   return newRow;

  });

   range.setValues(newValues);


}

我最终接受了罗宾的建议,并做了以下工作,该工作有效:

 rows.map(function(r) {
        r.day = new Date(r.day.getTime() - (date.getTimezoneOffset()*60000));
        r.day = r.day.toISOString().split('T')[0];
        return r
      })

其中,date全局定义为date = new Date() ,“行”其中包含数据的行,“ day”是(我在脚本前面定义的第一行[0]的)列名我试图更改的日期列。

再次感谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM