我想创建一个条件来检查数组中元素的数据类型(由电子表格中的数据形成)是否为日期对象(因此,我可以操纵该日期的字符串格式,因为我不希望使用像这样的日期:Thu May 23 2013 00:00:00 GMT-0400 (EDT)
但是像这样的日期:)23/05/2013
。
我使用以下功能从Google电子表格中获取日期:
function getRowAsArray(sheet, row) {
var dataRange = sheet.getRange(row, 1, 1, 99);
var data = dataRange.getValues();
var columns = [];
for (i in data) {
var row = data[i];
Logger.log("Got row", row);
for(var l=0; l<16; l++) {
var col = row[l];
columns.push(col);
}
}
return columns;
}
假设我的数据类型对象可以在data[i]
数组元素之一中。最简单的方法是什么?
var text = data[i];
假设我的数据类型对象可以在data[i]
数组元素之一中。最简单的方法是什么?它被折叠成一个蓬蓬,做这样的事情
var data = getRowAsArray(sheet, sheet);
for(var i=0; i<columns.length; i++) {
var key = ":" + columns[i] + ":";
if (data[i] instanceof Date) {
var d = data[i]; //date from data[i]
var m = d.getMonth() + 1; //months starts at 0
var y = d.getFullYear();
var day = d.getDate();
data[i] = day + "/" + m + "/" +y;
}
谢谢你的帮助!
别忘了GAS有专门的格式来格式化日期:
Utilities.format date(date,TZ,string representation);
您可以使用它来自定义日期显示方式。
与其他答案中建议的字符串操作相比,此方法具有一些优点:
这是一个示例函数来说明(读取代码中的注释,我在电子表格中使用了时区参数,因此我们确定该参数不会出错)
function convertDatesToStrings(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = ss.getDataRange().getValues();
for(n=0 ; n<data.length;++n){
var row = data[n];
for(var i=0; i<row.length; i++) {
if (row[i] instanceof Date) {
data[n][i] = "'"+Utilities.formatDate(row[i], SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "dd/MM/yy");// is a string
// added a ' before the string to ensure the spreadsheet won't convert it back automatically
Logger.log('Array cell '+n+','+i+' modified to '+data[n][i])
}
}
}
ss.getRange(1,1,data.length,data[0].length).setValues(data);// write back to sheet
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句