提问者:小点点

日期在Google表格宏/脚本中复制为“范围”


我正在努力解决谷歌表格中一个潜在的小问题。我只想将日期值复制到另一个单元格,而不更改日期格式等。

但是,如果我将日期保存在var中,记录器会找到“范围”。我也尝试了格式化,但最终得到了错误的日期、当前日期,或者什么都没有。

提示:单元格63,4包含一个日期值,格式为电子表格中的日期。

function test() {
  var as = SpreadsheetApp.getActiveSpreadsheet();
  var ss = as.getActiveSheet();
  var start = ss.getRange(63,4);
  var row = start.getRow();
  var col = start.getColumn();
  Logger.log(start);
  
  start = new Date(0);
  ss.getRange('C2').setValue(start);
  
  ...
  
}

运行此代码后,日志显示“RANGE”。

你知道如何解决这个问题吗?我认为我没有正确保存单元格,但我没有找到任何进一步的想法。


共1个答案

匿名用户

解释/问题:

  • 那是因为您没有获取值并且getRange返回范围类的实例。
  • 请记住,如果值是日期,您可能需要使用getDisplayValue()。

解决方案:

替换:

var start = ss.getRange(63,4);

与:

var start = ss.getRange(63,4).getDisplayValue();

并删除该部分:

start = new Date(0);

因为这将覆盖分配给start的当前值,这是您想要获取的所需日期。

代码片段:

function test() {
  var as = SpreadsheetApp.getActiveSpreadsheet();
  var ss = as.getActiveSheet();
  var start = ss.getRange(63,4).getDisplayValue(); // cell D63
  ss.getRange('C2').setValue(start);  
}