我正在为其他人设置一个电子表格,用表单输入数据。其中一列应该包含日期。输入日期格式如下示例:"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。是什么让你做出这个选择?
解决了这个问题,我只需要将逗号改为句点,它就可以实现