Google apps script Google Sheets脚本中的日期格式问题

Google apps script Google Sheets脚本中的日期格式问题,google-apps-script,google-sheets,date-format,Google Apps Script,Google Sheets,Date Format,我正在编写一个简单的Sheets脚本,它从文件夹中的电子表格中获取数据,对其进行重新组织,并将所有内容合并到主电子表格中。不过,我对工作表将看起来像日期的字符串存储为日期的方式有很多问题 基本上,其中一个单元格的内容是:“运行日期:2020年6月2日”。所以我在做一个正则表达式操作来提取日期并粘贴到另一个单元格中。问题在于,图纸默认情况下将其解释为美国格式(mm dd yyyy)的日期,但该日期应为国际格式(dd mm yyyy)。因此,当我执行此粘贴操作时,数据存储为错误的号码(43867而不

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

基本上,其中一个单元格的内容是:“运行日期:2020年6月2日”。所以我在做一个正则表达式操作来提取日期并粘贴到另一个单元格中。问题在于,图纸默认情况下将其解释为美国格式(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操作之后,以某种方式获取原始字符串,并将其转换为正确的日期数字。例如,“运行日期:2020年6月2日”>“2020年6月2日”>“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])
由Maldoror提供:

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);
试试这个:

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

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);
从问题

我有没有办法强制每个电子表格上粘贴日期的特定范围只存储文字字符串

是的,有

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

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

相关的

来自问题

我有没有办法强制每个电子表格上粘贴日期的特定范围只存储文字字符串

是的,有

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

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

相关的


谢谢您的回答!这段特殊的代码对我来说不起作用,但你告诉了我该怎么做。我修改了您的答案,这对我很有用:var date=sheet.getRange(2,35).getDisplayValue();var regex=new RegExp(“[0-9]*\/[0-9]*\/*\/[0-9]*”);var cleanDate=regex.exec(日期);var t=cleanDate[0]。拆分('/');var dateConv=新日期(t[2],t[1]-1,t[0]);sheet.getRange(11,1,lastrow-10).setValue(dateConv);再次感谢。谢谢你的回答!这段特殊的代码对我来说不起作用,但你告诉了我该怎么做。我修改了您的答案,这对我很有用:var date=sheet.getRange(2,35).getDisplayValue();var regex=new RegExp(“[0-9]*\/[0-9]*\/*\/[0-9]*”);var cleanDate=regex.exec(日期);var t=cleanDate[0]。拆分('/');var dateConv=新日期(t[2],t[1]-1,t[0]);sheet.getRange(11,1,lastrow-10).setValue(dateConv);再次感谢。我最后使用了另一条评论中概述的方法,但这也是非常有用的信息。非常感谢。我最终使用了另一条评论中概述的方法,但这也是非常有用的信息。非常感谢。