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

如何在JotForm提交新数据后自动复制Google Sheet(DGS)数据至常用表格?

自动同步JotForm提交数据到常用Google Sheet

原代码存在的问题

  1. 重复赋值覆盖了动态获取新行的逻辑,硬编码的固定行无法适配JotForm提交的新数据
  2. 缺少自动触发机制,无法在新数据录入时自动执行
  3. 源表格与目标表格ID未区分,需分别配置正确的ID

修正后的代码

function copydata(e) {
  // 仅在表单提交触发时执行,避免手动运行报错
  if (!e || !e.values) return;

  // 替换为你的实际表格ID和标签页名称
  const DGS_ID = "专用Google Sheet的ID";
  const DGS_TAB_NAME = "DGS的标签页名称";
  const TARGET_SHEET_ID = "常用Google Sheet的ID";
  const TARGET_TAB_NAME = "常用表格的标签页名称";

  // 获取源表格(仅读取,不做任何修改)
  const sourceSheet = SpreadsheetApp.openById(DGS_ID).getSheetByName(DGS_TAB_NAME);
  // 获取目标表格
  const targetSheet = SpreadsheetApp.openById(TARGET_SHEET_ID).getSheetByName(TARGET_TAB_NAME);

  // 从表单提交事件中直接获取新提交的行数据,避免读取最后一行的冲突
  let newRowData = e.values;

  // 如果需要调整列范围(比如原代码中从第2列取15列),取消下面的注释并修改索引
  // newRowData = newRowData.slice(1, 16); // 0索引,slice(起始索引, 结束索引)

  // 将数据追加到目标表格的最后一行
  targetSheet.appendRow(newRowData);
}

关键配置与注意事项

  • 触发器设置:在Google Apps脚本编辑器中,点击「编辑」→「当前项目的触发器」,添加新触发器:
    • 选择函数:copydata
    • 事件源:电子表格
    • 事件类型:表单提交
  • 避免修改DGS:代码仅对DGS执行读取操作,全程不修改源表格数据,彻底规避提交数据失真的问题
  • 列范围调整:如果不需要同步所有列,可通过slice方法截取需要的列,比如原代码中从第2列开始取15列,对应slice(1, 16)(数组为0索引)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:55:19