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

Google Apps Script拉取Sheets到Webapp时设置dd MMMM yyyy日期格式

解决方案

getValue()读取Google Sheets中格式为日期的单元格时,返回的是JavaScript原生Date对象,直接拼接到HTML字符串时会调用默认的日期转字符串规则,输出格式不受控。按下面两步修改即可实现dd MMMM yyyy(例:15 October 2024)的格式要求:

1. 新增通用日期格式化函数

在现有代码的任意位置(建议放在所有函数的最外层,不要嵌套在其他函数内部),添加下面这段格式化工具函数,专门把Date对象转换为目标格式:

function formatDate(dateVal) {
  // 日期为空时直接返回空字符串,避免显示异常内容
  if (!dateVal) return "";
  // 兼容单元格存储文本格式日期的场景
  const date = new Date(dateVal);
  // 个位数日期补前导零
  const padZero = (num) => num < 10 ? `0${num}` : num;
  // 月份全称列表,顺序对应JS Date的0-11月索引
  const monthNames = [
    "January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
  ];
  const day = padZero(date.getDate());
  const month = monthNames[date.getMonth()];
  const year = date.getFullYear();
  return `${day} ${month} ${year}`;
}

*如果需要显示中文月份全称,把上面monthNames数组里的英文月份替换为["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]即可。

2. 修改日期字段的取值逻辑

找到原代码中给b3、b8赋值的两行,用新增的格式化函数包裹取值结果,其余代码不需要改动:

// 原有写法
// var b3 = sheet.getRange(i, 3).getValue();
// var b8 = sheet.getRange(i, 8).getValue();

// 修改为
var b3 = formatDate(sheet.getRange(i, 3).getValue());
var b8 = formatDate(sheet.getRange(i, 8).getValue());

可选优化(提升运行速度)

当前逐行循环调用getRange().getValue()的写法,数据量较大时响应会很慢,可以一次性把整表数据读取到内存后再处理,功能和原逻辑完全一致,运行效率更高,修改后的完整submitDT函数参考如下:

function submitDT(obj){
  var ss = SpreadsheetApp.openById("google sheet url");
  var sheet = ss.getSheetByName("mysheet");
  var flag = 1;
  // 一次性读取所有有效单元格数据,避免反复调用表格接口
  var allData = sheet.getDataRange().getValues();
  for(var i = 0;i < allData.length;i++){
    var vid = allData[i][1];
    if(vid == obj){
      flag = 0;
      var b1 = allData[i][0];
      var b3 = formatDate(allData[i][2]);
      var b4 = allData[i][3];
      var b5 = allData[i][4];
      var b6 = allData[i][5];
      var b7 = allData[i][6];
      var b8 = formatDate(allData[i][7]);

      var data ="<center><table><tr><th colspan=2>Transaction Information.</th></tr><tr><td>Tracking No.:</td><td>"
+obj+"</td></tr><tr><td>Transaction Title</td><td>"+b1+"</td></tr><tr><td>Date Accepted by Focal:</td><td>"+b3+"</td></tr><tr><td>Name of Establishment:</td><td>"+b4+"</td></tr><tr><td>Address:</td><td>"+b5+"</td></tr><tr><td>Status:</td><td>"+b6+"</td></tr><tr><td>Claimed by:</td><td>"+b7+"</td></tr><tr><td>Date Claimed:</td><td>"+b8+"</td></tr></table></center>";
      return data;
    }
  }
  if(flag==1){
    var data ="Transaction not found. For other concerns, please contact us at **********";
    return data;
  } 
}

修改保存后重新部署Web应用时,记得选择「新建版本」,否则代码修改不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:57:21