如果您运行以下代码且电子表格中包含日期列,则客户端页面上的日期格式如下所示:Thu May 23 2013 00:00:00 GMT-0400(EDT)
我想将日期格式化为:2013年5月23日
我认为你可以通过改变线
来做到这一点<td><?= data[i][j] ?></td>
到
<td><?= Utilities.formatDate(new Date(data[i][j]), "GMT-5", "MMM dd, yyyy")data[i][j] ?></td>
...但问题是并非数组中的每个数据都是日期对象。如何检查数组中的对象是否属于某种类型?我想在应用formatDate函数之前确定当前对象是否是日期对象。
Code.gs
function doGet() {
return HtmlService
.createTemplateFromFile('index')
.evaluate();
}
function getData() {
return SpreadsheetApp
.openById('123abc')
.getDataRange()
.getValues();
}
的index.html
<? var data = getData(); ?>
<table>
<? for (var i = 0; i < data.length; i++) { ?>
<tr>
<? for (var j = 0; j < data[i].length; j++) { ?>
<td><?= data[i][j] ?></td>
<? } ?>
</tr>
<? } ?>
</table>
答案 0 :(得分:1)
有关于在javascript中获取对象类型的many questions and answers here。一定要全部阅读!
这是一个与您现有代码的样式相匹配的简单更改。将格式化程序函数放在Code.gs
中,并使模板化的html在构建表时在每个“单元格”上使用它。
......你拥有的一切加上:
function formatIfDate(obj) {
if (obj.constructor.name == 'Date')
return Utilities.formatDate(new Date(obj), "GMT-5", "MMM dd, yyyy")
else
return obj
};
更改
<td><?= data[i][j] ?></td>
到
<td><?= formatIfDate(data[i][j]) ?></td>