You need to enable JavaScript to run this app. 如何用Google App Script将Google Form响应存入数组并传给云系统POST请求
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google App Script将Google Form响应存入数组并传给云系统POST请求

Google Form 提交后直接提取字段发起API请求实现代码

前置配置

  • 记录你的Google Form中4个目标字段的准确问题标题,需和表单内填写的完全一致
  • 准备好目标API的请求地址TK_URL和鉴权凭证TOKEN

完整可运行代码

// 替换为你自己的表单ID
const FORM_ID = "你的表单ID";
// 替换为你表单里对应4个字段的准确问题标题
const FIELD_MAPPING = {
  name: "项目名称",
  client: "客户名称",
  starts_at: "项目开始日期",
  ends_at: "项目结束日期"
};
// 替换为你自己的API配置
const TK_URL = "你的API接口地址";
const TOKEN = "你的API鉴权TOKEN";

// 表单提交触发的主函数,无需手动调用,配置触发器后自动执行
function onFormSubmit(e) {
  // 直接获取最新提交的响应,不需要拉取所有历史记录
  const latestResponse = e.response;
  const itemResponses = latestResponse.getItemResponses();
  
  // 初始化提交数据
  const postData = {
    project_state: "Tentative"
  };

  // 匹配需要的4个字段
  itemResponses.forEach(item => {
    const questionTitle = item.getItem().getTitle();
    const answer = item.getResponse();
    // 匹配映射表,把对应答案填入postData
    for (const [key, formTitle] of Object.entries(FIELD_MAPPING)) {
      if (questionTitle === formTitle) {
        postData[key] = answer;
      }
    }
  });

  // 校验必填字段是否都获取到
  const requiredFields = ["name", "client", "starts_at", "ends_at"];
  const missingFields = requiredFields.filter(field => !postData[field]);
  if (missingFields.length > 0) {
    Logger.log(`缺失必填字段:${missingFields.join(",")}`);
    return;
  }

  // 发起POST请求
  const options = {
    method: "POST",
    contentType: "application/json",
    payload: JSON.stringify(postData)
  };
  const requestUrl = `${TK_URL}auth=${TOKEN}`;

  try {
    const response = UrlFetchApp.fetch(requestUrl, options);
    if (response.getResponseCode() === 200) {
      const resJson = JSON.parse(response.getContentText());
      const projectId = resJson.id;
      Logger.log(`项目创建成功,ID:${projectId}`);
    }
  } catch (err) {
    Logger.log(`请求失败:${err.toString()}`);
  }
}

// 如果需要批量处理所有历史表单响应,可手动运行这个函数
function batchProcessAllHistoryResponses() {
  const form = FormApp.openById(FORM_ID);
  const allResponses = form.getResponses();
  allResponses.forEach(res => {
    // 复用上面的处理逻辑,把每个响应传入模拟的事件对象
    onFormSubmit({response: res});
  });
}

部署操作步骤

  • 将上述代码复制到Google Apps Script编辑器,替换所有标注为需要自定义的参数
  • 保存项目,按照提示授权表单访问、网络请求等必要权限
  • 左侧菜单栏选择「触发器」→ 「添加触发器」:
    • 选择要运行的函数:onFormSubmit
    • 选择事件来源:来自表单
    • 选择事件类型:表单提交时
    • 保存触发器配置
  • 提交一次测试表单,查看执行日志验证API调用是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:57:03