我有一个列,其中日期以字符串格式保存,如:“11月18日星期二(11:00)” 我想取这个字符串日期并将其等效日期保存在与新列中的行相对应的日期格式中(表格中的第一个空列),以便稍后我可以将该日期与当前日期进行比较。
我写了这个函数,我正处于测试阶段。但是我有两个问题:
1)此函数未在新列的相应行中插入值。
2)由于setValue是Object类型,它不会在Date类型中保存值,对于我setDay,set Month方法不起作用(可能是因为对象错误)。
这是我的代码:
function replaceStringDate(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
var lastColumn = SpreadsheetApp.getActiveSheet().getLastColumn();
var dataRange = sheet.getRange(startRow,2,lastRow,12);
var values = dataRange.getValues();
var index = dataRange.getRowIndex();
for(i=0;i<values.length;++i){
var lastCell = sheet.getRange(index,14);
var appointmentDateFirst = values[i][8] ;
if (appointmentDateFirst == "Thursday, 18th November (11:00 to 12:00)") {lastCell.setValue('18/11/2011');}
index=index+1;
} //end for loop
} //end function
答案 0 :(得分:0)
这里有一段代码开始,我玩字符串操作和正则表达式...它有点脆弱,需要改进来处理不同的情况但是这个想法正在起作用...... 我确信只使用正则表达式可以更有效地完成它,但这种字符串方法更容易......
function convertToDateTest(){
Logger.log(convertToDate("Tuesday, 18th November(11:00)"))
}
function convertToDate(str){
Logger.log(str.substring(str.indexOf(', ')+1,str.indexOf('(')).replace('th','')+' '+new Date().getFullYear());
var date = new Date(str.substring(str.indexOf(', '),str.indexOf('(')).replace('th','')+' '+new Date().getFullYear());
var time = str.match(/((([0-1]?[0-9])|([2][0-3])):)([0-5][0-9])/g);
Logger.log(time);
new Date(date).setHours(time[0]);
return date;
}