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

Google表单提交时自动转换日期格式问题求助

解决Google表单提交后日期格式转换的脚本报错问题

首先咱们拆解你遇到的TypeError: Cannot call method "getSheets" of null报错:这个问题出在脚本的绑定位置上。你把脚本关联在了Google表单上,但SpreadsheetApp.getActiveSpreadsheet()是用来获取当前活跃的Google表格的——当表单触发脚本时,当前活跃的是表单而非表格,所以这个方法返回了null,自然没法调用getSheets()。

接下来给你一套靠谱的实现方案,既能解决报错,还能更高效地处理日期格式:

步骤1:转移脚本到目标表格

把你的脚本从Google表单里移出来,放到接收表单数据的那个Google表格里。表格绑定的脚本可以直接对接自身数据,逻辑更顺畅。

步骤2:使用事件对象精准处理新增行

原代码格式化整列B的逻辑会重复处理旧数据,我们可以利用表单提交的事件对象,只处理刚新增的那一行的日期,效率更高。修正后的代码如下:

function respondToFormSubmit(e) {
  // 获取表单提交新增的行范围
  const newRow = e.range;
  // 定位到该行的B列单元格(这里的2代表B列,A是1,以此类推)
  const dateCell = newRow.getSheet().getRange(newRow.getRow(), 2);
  // 设置目标日期格式
  dateCell.setNumberFormat('mm/dd/yyyy');
}

步骤3:配置表格端的触发器

  1. 打开目标Google表格,点击顶部菜单栏的「扩展程序」→「Apps脚本」;
  2. 把上面的代码粘贴进去,替换原有代码,保存项目;
  3. 点击左侧的「触发器」图标(时钟样式),然后点击「添加触发器」:
    • 选择运行的函数:respondToFormSubmit
    • 部署来源:选择「从工作表」
    • 事件来源:选择「表单提交」
    • 最后点击保存,按照提示完成权限授权即可。

额外注意事项

  • 确认表单的「响应目的地」确实是你绑定脚本的这个表格,避免选错表格导致脚本无效;
  • 记得删除之前在Google表单里设置的旧触发器,防止重复触发脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:52:02