在谷歌电子表格中重新格式化日期



我正在为其他人设置一个电子表格,用表单输入数据。其中一列应该包含日期。输入日期格式如下示例:"Jan262013"(需要大量的复制和粘贴来收集数据,因此在输入步骤更改格式不是一个真正的选择)。

我需要这个日期列是可排序的,但电子表格不将其识别为日期,而只是将其识别成字符串。(我试过了,它会认出"2013年1月26日"。)所以我需要重新格式化输入日期。

我的问题是:我该怎么做?我环顾四周,谷歌应用程序脚本看起来像是要走的路(尽管我还没有找到一个重新格式化的好例子)。不幸的是,我唯一的编程经验是Python,而且是中级的。我可以在Python中毫无问题地做到这一点,但我不懂任何JavaScript。(我的Python方法是:

splitted = date.split()
newdate = "-".join([splitted[0], splitted[1][:-1], splitted[2]])
return newdate

)

我也不知道该如何将脚本链接到电子表格上——我会将其附加到单元格、表单还是哪里?如何?任何关于这一点的有用的、可理解的教程等链接都会有很大帮助。

非常感谢您的帮助!

编辑:这是我最终得到的代码:

//Function to filter unwanted " chars from date entries
function reformatDate() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startrow = 2;
  var firstcolumn = 6;
  var columnspan = 1;
  var lastrow = sheet.getLastRow();
  var dates = sheet.getRange(startrow, firstcolumn, lastrow, columnspan).getValues();
  newdates = []
  for(var i in dates){
    var mydate = dates[i][0];
    try
      {
      var newdate = mydate.replace(/"/g,'');
      }
    catch(err)
      {
      var newdate = mydate
      }
     newdates.push([newdate]);
  }
  sheet.getRange(startrow, firstcolumn, lastrow, columnspan).setValues(newdates)
}

对于其他困惑的谷歌脚本新手像我:

  • 将脚本附加到电子表格的方法是从电子表格中创建脚本(工具=>脚本编辑器)。只要把函数放在那里就足够了,你似乎不需要函数调用等。

  • 从脚本编辑器中选择脚本的触发器(资源=>此项目的触发器)。

重要信息:只有当有问题的工作表底部有空行时,脚本才会工作!

只是一个想法:

如果你双击电子表格中的日期字符串,你会看到它的实际值是这个'Jan 26, 2013,它的'在我没有添加到这里的字符串前面。。。(表单这样做是为了让你可以在文本区域键入你想要的内容,包括+322475…例如,如果它是一个电话号码,这在电子表格单元格中是一个已知的技巧)你可以简单地制作一个在表单提交时运行的脚本,删除单元格中的',我想电子表格会完成剩下的工作…(我没有测试过,所以试一下,并将其视为一个建议)。

要删除',您可以简单地使用.replace()方法**

var newValue = value.replace(/'/g,'');

这里有一些相关文档的链接:链接1链接2


根据您的评论编辑:

这可能更简单,因为如果没有找到匹配项,replace不会生成错误。所以你可以这样做:

function reformatDate() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dates = sheet.getRange(2, 6, sheet.getLastRow(), 1).getValues();
  newdates = []
  for(var i in dates){
    var mydate = dates[i][0];
      var newdate = mydate.replace(/"/g,'');
     newdates.push([newdate]);
  }
  sheet.getRange(2, 6, sheet.getLastRow(), 1).setValues(newdates)
}

此外,您在代码中使用了",可能是故意的。。。我的测试显示CCD_ 8。是什么让你做出这个选择?

解决了这个问题,我只需要将逗号改为句点,它就可以实现

相关内容

  • 没有找到相关文章

最新更新