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

Apps Script实现WhatsApp自动回复:日期时间写入Google Sheet问题排查

WhatsApp自动回复脚本日期写入问题分析与修复

你的脚本存在几个可能导致日期无法正确写入Google Sheet的问题,同时还有潜在bug需要修复:

主要问题点

  1. 错误的请求数据解析方式
    你通过JSON.stringify(e).replace(...)手动处理请求数据的方式非常脆弱,极易破坏JSON结构导致解析失败,使代码无法执行到日期写入步骤。正确做法是直接解析e.postData.contents——它本身就是标准JSON格式字符串,无需额外转义处理。

  2. 未定义变量引发的执行中断
    回复消息中的${nama}变量未在脚本中定义,会直接导致脚本报错终止,后续日期写入逻辑也无法执行。根据你的消息解析逻辑,这里应该使用ulp变量(即用户输入的名称)。

  3. 低效的单元格写入逻辑
    逐个调用getRange().setValue()会降低脚本执行效率,高请求量下容易触发执行超时。建议使用appendRow()批量写入数据,同时自动定位到表格最后一行。

  4. 时区与单元格格式隐患
    虽然new Date()能生成正确的Date对象,但如果Google Sheet的F列未设置为「日期时间格式」,日期会显示为时间戳数字;另外Apps Script默认时区可能与你所在时区不一致,需显式指定时区保证日期准确性。

修复后的完整脚本

function doPost(e) {
  // 打开目标表格
  const sheetUrl = "你的Google Sheet链接";
  const file = SpreadsheetApp.openByUrl(sheetUrl);
  const sheet = file.getSheetByName("Sheet1");

  try {
    // 正确解析请求数据
    const reqJson = JSON.parse(e.postData.contents);
    const senderMessage = reqJson.postData.contents.senderMessage;

    // 拆分并提取消息内容
    const parsedMessage = senderMessage.split("#");
    const ulp = parsedMessage[1].trim();
    const kategori = parsedMessage[2].trim();
    const catatan = parsedMessage[3].trim().slice(0, -1);
    // 显式指定时区(示例为印尼时区,可根据需求调整)
    const datetime = new Date(new Date().toLocaleString("en-US", { timeZone: "Asia/Jakarta" }));

    // 生成注册ID
    const prefixIdPendaftar = 220000;
    const nextRow = sheet.getLastRow() + 1;
    const idPendaftar = `B-${prefixIdPendaftar + nextRow - 1}`;

    // 批量写入数据(数组第5位留空对应原脚本的E列,第6位为日期写入F列)
    sheet.appendRow([idPendaftar, ulp, kategori, catatan, "", datetime]);

    // 构造正确的回复消息
    const response = {
      data: [
        {
          message: `Terima kasih, ananda ${ulp} berhasil terdaftar dengan ID ${idPendaftar}.`
        }
      ]
    };

    return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    // 错误捕获与友好提示
    const errorResponse = {
      data: [
        {
          message: "Maaf, terjadi kesalahan saat memproses permintaan Anda."
        }
      ]
    };
    return ContentService.createTextOutput(JSON.stringify(errorResponse)).setMimeType(ContentService.MimeType.JSON);
  }
}

额外注意事项

  • 给Google Sheet的F列设置日期时间格式:选中F列 → 格式 → 数字 → 日期时间,选择适配的显示样式。
  • 验证请求数据结构:确认reqJson.postData.contents.senderMessage确实是你需要的字符串,若请求结构不同,需对应调整解析逻辑。
  • 脚本部署权限:确保Apps Script部署时选择了「任何人,甚至匿名」的访问权限,否则无法接收WhatsApp的Webhook请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:57:50