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

如何制作表单在不公开Google Sheet时更新指定行对应列的任务状态

解决方案

你需要搭配绑定到Google Sheet的Google Apps Script实现按公寓号更新对应列的需求,具体操作步骤如下:

步骤1:调整Google Form字段

  • 保留两个必填字段即可:
    • 第一个为下拉选择框,选项和Sheet A列的公寓号完全一致,数量少可以手动填写,数量多可以后续用脚本同步选项
    • 第二个为单选/下拉选择框,选项对应你要标记完成的任务:比如木工(对应B列)、管道工(对应D列)、对应F列的任务名称,可根据需求设置为支持多选单次提交多个任务完成状态

步骤2:在Google Sheet中配置自动运行脚本

  • 打开你的目标Google Sheet,点击顶部菜单栏「扩展程序」-「Apps 脚本」,进入脚本编辑页面
  • 删除默认的空函数,粘贴如下代码,按照代码内注释调整适配你自己的表格配置:
function onFormSubmit(e) {
  // 取表单提交数据
  const formData = e.values;
  // 此处索引要和你的表单字段顺序对应,e.values第一个值固定为提交时间,第二个值为第一个表单字段的内容
  const targetFlat = formData[1]; 
  const finishedTask = formData[2];

  // 获取目标表格数据,引号内替换为你自己的Sheet工作表名称
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  const allFlatList = sheet.getRange('A:A').getValues().flat();
  // 匹配目标公寓号对应的行号
  const targetRow = allFlatList.indexOf(targetFlat) + 1;
  // 没匹配到对应公寓号直接终止运行
  if (targetRow < 2) return;

  // 任务和对应列的映射,数字为列的序号,B列是2、D列是4、F列是6,可自行调整
  const taskToCol = {
    "木工": 2,
    "管道工": 4,
    "你自己的F列对应任务名": 6
  };

  // 给对应位置打标记,如果你表格对应列已经设置了复选框格式,把'✅'替换成true即可
  if (taskToCol[finishedTask]) {
    sheet.getRange(targetRow, taskToCol[finishedTask]).setValue('✅');
  }
}

步骤3:绑定表单提交触发规则

  • 在脚本编辑器页面,点击左侧「触发器」按钮(闹钟样式图标)
  • 点击右下角「添加触发器」,按如下规则设置:
    • 选择要运行的函数:onFormSubmit
    • 选择事件来源:电子表格
    • 选择事件类型:表单提交时
    • 保存后按照页面提示完成权限授权即可

步骤4:关闭表单默认新增行功能

  • 回到你的Google Sheet,点击顶部「表单」-「取消表单链接」,即可关闭表单提交自动新增行的默认逻辑,所有数据修改都会由你设置的脚本自动完成

权限控制说明

  • 不需要公开Sheet的编辑权限,仅需将表单设置为「有链接即可提交」即可,所有数据修改由脚本自动执行
  • 如果需要限制提交人员范围,可以开启表单的「仅组织内用户可提交」设置,也可以在表单开头增加密码验证字段,在脚本中判断密码正确再执行更新逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:45:08