如何解决Google Forms响应表日期计算返回整数而非格式化日期问题
解决方案
你遇到的是Google表单提交新行时,自动继承默认格式覆盖列设置的问题,按优先级可以选以下方法解决:
方法1:整列固定格式(优先推荐)
- 点击
due date列顶部的列标,选中整列 - 点击顶部菜单栏「格式」→「数字」,选择你需要的日期格式即可,也可以选「自定义日期和时间」设置
dd/mm/yyyy这类自定义规则 - 只要选中整列设置,后续表单新增的行都会自动继承这个格式,不会再返回日期序列号
方法2:公式内置格式化
如果第一种方法还是偶发失效,可以直接修改ARRAYFORMULA公式,用TEXT函数强制输出指定格式的日期:
ARRAYFORMULA(if(D2:D<>"",TEXT(TO_DATE(D2:D+10),"dd/mm/yyyy"),""))
注意:该方法输出的是文本格式的日期,如果后续需要用
due date字段做日期计算、筛选等操作,不推荐使用该方法。
方法3:触发器强制格式(极端场景使用)
如果上述两种方法都不生效,可以通过设置表单提交触发器,每次新提交时自动给新增行的due date字段设置格式:
- 点击顶部菜单栏「扩展程序」→「Apps 脚本」
- 清空默认代码,粘贴以下代码:
function formatNewSubmission() { // 引号内替换为你的表单响应工作表名称 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('表单响应 1'); // 替换为due date列的序号,A列对应1、B列对应2,以此类推 const dueDateCol = 5; const lastRow = sheet.getLastRow(); // 引号内替换为你需要的日期格式 sheet.getRange(lastRow, dueDateCol).setNumberFormat('dd/mm/yyyy'); }
- 左侧菜单栏选择「触发器」→「添加触发器」,事件源选择「电子表格」,事件类型选择「表单提交时」,完成授权保存即可。
内容的提问来源于stack exchange,提问作者e902d894cc
相关产品推荐
相关产品推荐

