如何确定某个对象是否属于某种类型?

时间:2013-05-23 20:08:04

标签: javascript google-apps-script

如果您运行以下代码且电子表格中包含日期列,则客户端页面上的日期格式如下所示: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>

1 个答案:

答案 0 :(得分:1)

有关于在javascript中获取对象类型的many questions and answers here。一定要全部阅读!

这是一个与您现有代码的样式相匹配的简单更改。将格式化程序函数放在Code.gs中,并使模板化的html在构建表时在每个“单元格”上使用它。

Code.gs

......你拥有的一切加上:

function formatIfDate(obj) {
  if (obj.constructor.name == 'Date')
    return Utilities.formatDate(new Date(obj), "GMT-5", "MMM dd, yyyy")
  else 
    return obj
};

的index.html

更改

<td><?= data[i][j] ?></td>

<td><?= formatIfDate(data[i][j]) ?></td>