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

如何实现两个Google表单关联同一Google表格并自动填充第二个表单?

实现Google表单归还钥匙时自动填充已填信息的方案

这个需求完全可行,核心是借助Google Apps Script来关联两张表单和共享表格的数据,下面提供两种落地方法:

方法1:用户输入唯一标识自动匹配填充

适合不想提前生成专属二维码的场景,用户扫描通用归还二维码后,输入自己的联系电话,脚本自动从共享表格中提取对应信息填充表单:

  1. 调整归还表单结构

    • 添加「联系电话」输入框(作为匹配标识)
    • 添加「姓名」「公司」「领用事由」字段,将这些字段设置为仅显示不可编辑(编辑字段时,右键选择「数据验证」,设置为固定值或禁用编辑权限)
    • 保留「确认已归还钥匙」复选框作为唯一需要用户操作的项
  2. 编写Apps Script脚本
    打开归还表单,点击右上角「扩展程序」→「Apps Script」,替换以下脚本中的占位内容后保存:

    function onOpen() {
      const ui = SpreadsheetApp.getUi();
      ui.createMenu('钥匙管理')
        .addItem('设置自动填充触发器', 'setupTrigger')
        .addToUi();
    }
    
    function setupTrigger() {
      const form = FormApp.openById('你的归还表单ID'); // 替换为归还表单的ID
      ScriptApp.newTrigger('fillUserInfo')
        .forForm(form)
        .onFormSubmit()
        .create();
    }
    
    function fillUserInfo(e) {
      // 获取用户输入的电话
      const phone = e.response.getItemResponses().find(item => item.getItem().getTitle() === '联系电话').getResponse();
      if (!phone) return;
    
      // 从共享表格读取领钥匙记录
      const sheet = SpreadsheetApp.openById('共享表格ID').getSheetByName('领钥匙记录工作表名'); // 替换为共享表格ID和对应工作表名
      const allData = sheet.getDataRange().getValues();
      // 匹配对应电话的记录(假设电话在领钥匙表格的第3列,索引从0开始)
      const userRecord = allData.find(row => row[2] === phone);
      if (!userRecord) return;
    
      // 填充归还表单的对应字段
      const form = FormApp.openById('你的归还表单ID');
      const formItems = form.getItems();
      formItems.forEach(item => {
        switch(item.getTitle()) {
          case '姓名':
            item.asTextItem().setResponse(userRecord[0]); // 假设姓名在领钥匙表格第1列
            break;
          case '公司':
            item.asTextItem().setResponse(userRecord[1]); // 假设公司在领钥匙表格第2列
            break;
          case '领用事由':
            item.asTextItem().setResponse(userRecord[3]); // 假设事由在领钥匙表格第4列
            break;
        }
      });
    }
    
  3. 激活触发器
    点击脚本界面的「钥匙管理」菜单,选择「设置自动填充触发器」,授权后即可生效。

方法2:生成专属预填充归还二维码

适合提前给用户生成专属归还凭证的场景,用户提交领钥匙表单后,脚本自动生成带预填充参数的归还链接,可直接转为二维码:

  1. 编写自动生成预填充链接的脚本
    打开领钥匙表单的关联表格,进入「Apps Script」,替换占位内容后保存:

    function generateReturnLink(e) {
      // 获取领钥匙表单的提交数据
      const responses = e.response.getItemResponses();
      const name = responses.find(item => item.getItem().getTitle() === '姓名').getResponse();
      const company = responses.find(item => item.getItem().getTitle() === '公司').getResponse();
      const phone = responses.find(item => item.getItem().getTitle() === '电话').getResponse();
      const reason = responses.find(item => item.getItem().getTitle() === '领用事由').getResponse();
    
      // 生成预填充归还链接
      const returnFormId = '你的归还表单ID';
      const form = FormApp.openById(returnFormId);
      // 获取归还表单各字段的ID
      const nameItemId = form.getItemByTitle('姓名').getId();
      const companyItemId = form.getItemByTitle('公司').getId();
      const phoneItemId = form.getItemByTitle('电话').getId();
      const reasonItemId = form.getItemByTitle('领用事由').getId();
    
      const prefillUrl = `https://docs.google.com/forms/d/e/${returnFormId}/viewform?entry.${nameItemId}=${encodeURIComponent(name)}&entry.${companyItemId}=${encodeURIComponent(company)}&entry.${phoneItemId}=${encodeURIComponent(phone)}&entry.${reasonItemId}=${encodeURIComponent(reason)}`;
    
      // 将预填充链接写入共享表格的对应行(比如第5列)
      const sheet = SpreadsheetApp.getActiveSheet();
      const lastRow = sheet.getLastRow();
      sheet.getRange(lastRow, 5).setValue(prefillUrl);
    }
    
  2. 设置表单提交触发器
    在脚本界面创建「表单提交」触发器,绑定generateReturnLink函数,这样用户提交领钥匙表单后,表格会自动生成对应的归还预填充链接,将链接转为二维码即可给用户作为归还凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:32:51