我正在为其他人设置一个电子表格,其中包含用于输入数据的表单。 其中一列应该有一个日期。输入日期格式如下例所示:“2013年1月26日”(收集数据时会涉及大量复制和粘贴,因此在输入步骤中更改格式不是一个真正的选项)。
我需要此日期列可以排序,但电子表格不会将其识别为日期,而只是字符串。 (它会认出“Jan-26-2013”,我试过了。) 所以我需要重新格式化输入日期。
我的问题是:我怎么能这样做?我环顾四周,谷歌应用程序脚本看起来像是要走的路(虽然我还没有找到重新格式化的好例子)。 不幸的是,我唯一的编程经验是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)
}
对于像我这样其他困惑的谷歌脚本新手:
通过在电子表格中创建脚本(工具=>脚本编辑器),将脚本附加到电子表格。只需将函数放在那里就足够了,你似乎不需要函数调用等。
从脚本编辑器中选择脚本的触发器(参考资料=>此项目的触发器)。
重要提示:只有在相关工作表底部有空行时,脚本才会生效!
答案 0 :(得分:1)
只是一个想法:
如果您双击电子表格中的日期字符串,您会看到它的真实值使其成为字符串而不是日期对象是'Jan 26, 2013
,字符串前面有'
我没有在这里添加...(表单可以让你在文本区域输入你想要的内容,包括+322475 ...例如,如果是电话号码,这是电子表格单元格中的一个已知技巧你可以简单地创建一个运行on form submit并删除单元格中'
的脚本,我想电子表格会完成其余的工作......(我没有测试过,所以试一试并认为这是一个建议)。
要删除'
,您只需使用.replace()
method **
var newValue = value.replace(/'/g,'');
按照您的评论编辑:
它可能更简单,因为如果找不到匹配,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)
}
此外,您在代码中使用了"
,大概是故意的......我的测试显示'
。是什么让你做出这个选择?
答案 1 :(得分:0)
解决了这个问题,我只需将逗号更改为点,就可以了。