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

Google Apps Script:识别触发同一函数的表单响应来源表格

如何判断触发函数的表单/表格来源

方法1:绑定事件时传递自定义标识

在给每个表单绑定触发事件的环节,直接传入表格/表单的唯一标识(比如表格ID、名称)作为参数:

  • 以Google Apps Script场景为例:
    1. 打开脚本编辑器,找到事件绑定逻辑
    2. 为不同表单的提交事件绑定函数时,通过setProperty存入标识:
    // 绑定表单A的提交事件,关联表格A的ID
    ScriptApp.newTrigger('yourTargetFunction')
      .forForm(FormApp.openById('表单A的ID'))
      .onFormSubmit()
      .setProperty('sourceTableId', '表格A的ID')
      .create();
    
    // 绑定表单B的提交事件,关联表格B的ID
    ScriptApp.newTrigger('yourTargetFunction')
      .forForm(FormApp.openById('表单B的ID'))
      .onFormSubmit()
      .setProperty('sourceTableId', '表格B的ID')
      .create();
    
    1. 在目标函数中通过触发对象读取标识:
    function yourTargetFunction(e) {
      const sourceTableId = e.trigger.getProperties().sourceTableId;
      console.log('触发事件的表格ID:', sourceTableId);
      // 后续根据标识执行对应逻辑
    }
    

方法2:通过响应反向关联表格

利用表单提交的响应对象,反向找到绑定的表格:

function yourTargetFunction(e) {
  // 从响应链接中提取表单标识
  const formKey = e.response.getEditResponseUrl().split('formkey=')[1];
  // 遍历当前文档的所有工作表,匹配绑定的表单
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets().find(sheet => {
    const linkedFormUrl = sheet.getFormUrl();
    return linkedFormUrl && linkedFormUrl.includes(formKey);
  });
  if (targetSheet) {
    console.log('触发事件的表格名称:', targetSheet.getName());
  }
}

方法3:给表单添加隐性标识字段

在每个表单中添加一个隐藏的短答案字段,字段值设为对应表格的名称/ID,提交时该值会被同步到表格:

  • 操作步骤:在表单编辑器中添加短答案问题,设置为「仅管理员可见」,填入对应表格的标识
  • 函数中直接读取该字段值:
function yourTargetFunction(e) {
  // 假设隐藏字段是表单的第5个问题,对应数组索引4(数组从0开始)
  const sourceTable = e.values[4];
  console.log('触发事件的表格:', sourceTable);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:01:22