0

以下のコードを実行し、スプレッドシートに日付列がある場合、クライアント ページの日付形式は次のようになります: 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>
4

1 に答える 1

1

ここには、JavaScript でオブジェクトの型を取得することに関する多くの質問と回答があります。必ずすべてお読みください。

これは、既存のコードのスタイルに一致する簡単な変更です。フォーマッタ関数を に配置し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>
于 2013-05-23T20:30:16.637 に答える