Google 表格脚本中的日期格式问题

Trouble with date formats in Google Sheets scripting

我正在编写一个简单的表格脚本,它从文件夹中的电子表格中获取数据,重新组织数据并将所有内容合并到主电子表格中。不过,我对表格将看起来像日期的字符串存储为日期的方式遇到了很多麻烦。

基本上,其中一个单元格的内容是这样的:“运行 日期:02/06/2020”。所以我正在执行 REGEX 操作以提取日期并将其粘贴到另一个单元格中。问题是表格默认情况下将其解释为美国格式 (mm-dd-yyyy) 的日期,但日期应采用国际格式 (dd-mm-yyyy)。所以当我执行此粘贴操作时,数据存储为错误的数字(43867 而不是 43984)。

这是相关的代码:

  var date = sheet.getRange(2, 35).getDisplayValue();       
  var regex = new RegExp("[0-9]*\/[0-9]*\/*\/[0-9]*");
  var cleanDate = regex.exec(date); 
  sheet.getRange(11, 1, lastrow-10).setValue(cleanDate);

我试过 setNumberFormat() 方法,但它没有解决我的问题,因为它解释了错误的基础数字。有没有办法强制我在每个电子表格上粘贴此日期的特定范围只存储文字字符串?

我想到的另一个可能的解决方案是以某种方式在 REGEX 操作之后获取原始字符串并将其转换为正确的日期基础数字。例如。 “运行 日期:02/06/2020”>“02/06/2020”>“43984”。这可能会更好,因为我以后不必处理文字字符串“02/06/2020”,但我不知道该怎么做。

谢谢。

试试这个:

var dts=sheet.getRange(2, 35).getDisplayValue();       
var t=dts.split('/');
var date=new Date(t[2],t[0]-1,t[1])

马尔多罗提供:

var date = sheet.getRange(2, 35).getDisplayValue(); 
var regex = new RegExp("[0-9]*\/[0-9]*\/*\/[0-9]*"); 
var cleanDate = regex.exec(date); 
var t=cleanDate[0].split('/'); 
var dateConv=new Date(t[2],t[1]-1,t[0]); 
sheet.getRange(11, 1, lastrow-10).setValue(dateConv);

来自问题

Is there a way for me to force the particular range where this date is pasted on each spreadsheet to only store the literal string?

是的,有。

sheet.getRange(11, 1, lastrow-10).setValue("'" + cleanDate);

说明

在 Google 表格中,一种防止将单元格值强制视为文本(字符串)的方法是在前面加上撇号

相关

  • Format a Google Sheets cell in plaintext via Apps Script