如何从外部程序向Google Form提交数据或添加表单记录?
解决方案
方法1:模拟Google Forms原生POST提交
Google Forms支持直接通过HTTP POST请求提交数据,无需依赖API,步骤如下:
- 打开目标Google Forms,点击右上角预览按钮进入表单预览页
- 打开浏览器开发者工具(F12)切换到「网络」标签,手动提交一次测试数据
- 在网络请求列表中找到提交对应的POST请求,复制其请求URL(格式通常为
https://docs.google.com/forms/d/e/[表单ID]/formResponse) - 查看该请求的Form Data,找到每个表单字段对应的
entry.xxx参数(如文本框对应entry.123456789) - 在你的网站前端构建表单,将表单
action设为复制的URL,method设为POST,每个输入框的name属性对应找到的entry.xxx参数 - 用户提交网站表单后,数据会自动同步到Forms的提交记录和关联的Sheets中
方法2:部署Google Apps Script Web App供外部调用
Web App并非只能嵌入Google Sites,可独立作为接口供外部网站调用:
- 打开关联的Google Sheets,点击「扩展程序 > Apps Script」进入脚本编辑器
- 编写接收POST请求的处理函数,示例代码:
function doPost(e) { // 替换为你的表单响应表名 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("表单响应 1"); const submitData = JSON.parse(e.postData.contents); // 按表单字段顺序整理数据,可按需添加时间戳 const submitRow = [new Date(), submitData.username, submitData.contact, submitData.content]; targetSheet.appendRow(submitRow); // 如需同步到Forms提交记录,可启用Forms API后添加以下代码 // const targetForm = FormApp.openById("[你的表单ID]"); // targetForm.createResponse() // .withItemResponse(targetForm.getItemById("[问题ID]").createResponse(submitData.username)) // .submit(); return ContentService.createTextOutput(JSON.stringify({status: "success"})) .setMimeType(ContentService.MimeType.JSON); }
- 部署Web App:点击右上角「部署 > 新版本」,设置执行权限为「我」,访问权限设为「任何人,甚至匿名」(可根据需求调整)
- 复制部署生成的Web App URL,在你的网站通过POST请求向该URL发送数据即可
方法3:调用Google Forms API(需OAuth2认证)
若需更严谨的权限控制,可使用Forms API的responses.create接口:
- 在Google Cloud Console启用Forms API
- 为网站创建OAuth2客户端ID,获取合法访问令牌
- 调用
POST https://forms.googleapis.com/v1/forms/[表单ID]/responses接口,提交结构化响应数据,示例请求体:
{ "responses": [ { "questionId": "[对应问题ID]", "textAnswers": { "answers": [{"value": "用户输入内容"}] } } ] }
此方式会直接在Forms中生成提交记录,并自动同步到关联的Sheets
内容的提问来源于stack exchange,提问作者SuperEnderSlayer
相关产品推荐
相关产品推荐

