You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Apps Script HTML模板表格中格式化日期为dd/mm/yyyy

如何在Google Apps Script的HTML模板中格式化日期为dd/mm/yyyy?

我正在用Google Apps Script开发应用,用来读取Google Sheets的数据并在HTML应用里展示。已经成功获取了目标数据区域,其中日期列在Sheets里存储为dd/mm/yyyy格式,但运行HTML模板时,日期显示成了类似Sat Jun 03 2023 00:00:00 GMT-0300 (GMT-03:00)的格式。我用materialize.css的日期选择器收集日期,相关代码片段如下:

Google Apps Script数据获取函数

function travelsTable() {
  var ss = SpreadsheetApp.openByUrl(url);
  var sheetViagens = ss.getSheetByName("viagens");
  var dateViagens = sheetViagens.getRange(2,1,40,1);
  var listaDates = dateViagens.getValues();
}

表格行拼接代码

for (var i = 0; i < listaDates.length; i++) {
  if (listaDates[i][0] != "") {
    linesViagens += "<tr><td class='center-align'>" + listaDates[i][0] + "</td>";
  }
}

HTML文件引用

<body>
  <h2 class="center-align">Dashboard de Solicitações </h2>
  <br>
  <?!= headTableViagens; ?>
  <?!= linesViagens; ?>
  <?!= footTableViagens; ?>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>

两种解决方法

方法一:在Google Apps Script端格式化日期

从Sheets获取的日期是原生Date对象,直接用GAS内置的Utilities.formatDate()工具函数将其转为dd/mm/yyyy格式的字符串,再传给HTML模板。

修改后的travelsTable函数:

function travelsTable() {
  var ss = SpreadsheetApp.openByUrl(url);
  var sheetViagens = ss.getSheetByName("viagens");
  var dateViagens = sheetViagens.getRange(2,1,40,1);
  var listaDates = dateViagens.getValues();
  
  // 遍历数组,将Date对象格式化为dd/mm/yyyy字符串
  listaDates = listaDates.map(row => {
    if (row[0] instanceof Date) {
      // 使用脚本时区(或指定时区如"GMT-03:00")
      return [Utilities.formatDate(row[0], Session.getScriptTimeZone(), "dd/MM/yyyy")];
    }
    return row;
  });
  
  // 后续拼接表格行的逻辑不变
}

表格行拼接代码无需额外修改,直接使用格式化后的字符串即可。

方法二:在前端HTML中格式化日期

如果希望在前端处理日期格式,可以保留Date对象的原始传递,在HTML中通过JavaScript脚本遍历表格单元格,将日期字符串转为目标格式。

修改后的HTML文件:

<body>
  <h2 class="center-align">Dashboard de Solicitações </h2>
  <br>
  <?!= headTableViagens; ?>
  <?!= linesViagens; ?>
  <?!= footTableViagens; ?>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
  <script>
    // 遍历所有日期单元格,格式化显示
    document.querySelectorAll('td.center-align').forEach(cell => {
      const text = cell.textContent;
      // 判断是否为Date对象的字符串表示
      if (text.includes('GMT')) {
        const date = new Date(text);
        // 补零处理:确保日、月为两位数
        const day = String(date.getDate()).padStart(2, '0');
        const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
        const year = date.getFullYear();
        cell.textContent = `${day}/${month}/${year}`;
      }
    });
  </script>
</body>

内容的提问来源于stack exchange,提问作者heros00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:47:41