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

求助:如何基于Google Sheet列B响应触发对应脚本函数

解决Google表单提交的分支触发问题

嗨,我来帮你搞定这个需求!你猜的没错,只需要加一个主入口函数来做判断,就能根据B列的内容触发对应的处理逻辑了,具体步骤和代码如下:

核心思路

原来的触发器直接绑定Bob函数,自然没法区分提交内容。我们可以创建一个统一的表单提交触发函数,由它来读取B列的内容(也就是表单提交的第二个字段,对应e.values[1]),然后根据内容调用Bob或者Joe的处理函数。

具体代码实现

1. 编写主触发函数

这个函数是触发器的唯一入口,负责判断分发:

function onFormSubmit(e) {
  // 获取B列的提交内容(表单第二个字段,数组索引从0开始)
  var personName = e.values[1];
  
  // 根据名字调用对应的处理函数
  if (personName === 'Bob') {
    Bob(e);
  } else if (personName === 'Joe') {
    Joe(e);
  }
  // 后续如果要加更多人,直接在这里加else if判断就行
}

2. 保留并复用你的Bob函数

你的Bob函数已经写好了,直接保留就行,它会接收表单提交的参数e:

function Bob(e) {
 var timestamp = e.values[0];
 var name = e.values[1];
 var awesome = e.values[2];
 var file = DriveApp.getFileById('1BxK26Yim0-nAVQW5FcQ59q3Uxe2qm9EhClLE1thSdMU');
 var folder = DriveApp.getFolderById('149gm5Voa3tthmv66cF5kJmf3bf2zj-VA')
 var copy = file.makeCopy(name, folder);
 var doc = DocumentApp.openById(copy.getId());
 var body = doc.getBody();
 body.replaceText('{{Timestamp}}', timestamp);
 body.replaceText('{{Name}}', name);
 body.replaceText('{{Awesome}}', awesome);
 doc.saveAndClose();
}

3. 创建Joe的处理函数

和Bob函数结构完全一致,只需要替换成Joe对应的模板文档ID和目标文件夹ID:

function Joe(e) {
 var timestamp = e.values[0];
 var name = e.values[1];
 var awesome = e.values[2];
 // 替换成Joe专属的模板Doc ID和存放文件夹ID
 var file = DriveApp.getFileById('这里替换成Joe的模板文档ID');
 var folder = DriveApp.getFolderById('这里替换成存放Joe文件的文件夹ID')
 var copy = file.makeCopy(name, folder);
 var doc = DocumentApp.openById(copy.getId());
 var body = doc.getBody();
 body.replaceText('{{Timestamp}}', timestamp);
 body.replaceText('{{Name}}', name);
 body.replaceText('{{Awesome}}', awesome);
 doc.saveAndClose();
}

最后调整触发器设置

  1. 打开你的Google Sheet,点击顶部菜单栏的「扩展程序」→「Apps脚本」。
  2. 进入脚本编辑器后,点击左侧的时钟图标(触发器面板)。
  3. 删除原来绑定Bob函数的旧触发器,然后点击「添加触发器」:
    • 选择函数为onFormSubmit
    • 事件源选「从电子表格」
    • 事件类型选「表单提交」
    • 保存即可

注意点

  • 确认e.values[1]确实对应B列:表单提交的响应数组里,第一个元素(索引0)是时间戳,第二个元素(索引1)就是B列的内容,如果你的表单字段顺序有调整,记得修改索引值。
  • 后续如果要新增其他名字的处理逻辑,只需要在onFormSubmit里加else if判断,再创建对应的处理函数就行,不用改触发器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:18:13