如何通过Apps Script提交预填充Google表单?求助排障
如何通过Apps Script提交预填充的Google表单?
我尝试用Apps Script提交从预填充链接生成的Google表单,已经按照教程把预填充链接里的viewform替换成了formResponse,但试了两种方案都没效果,表单完全没响应。
我试过的两种方案:
方案一:
function send() { var config = { muteHttpExceptions: true, method: "get" }; var url = "https://docs.google.com/forms/d/e/<form_id>/formResponse?usp=pp_url&entry.231322462=ANO&entry.133135319=1&entry.1743053173=2023-01-15"; var response = UrlFetchApp.fetch(url, config); //Logger.log(response) }
方案二:
function send() { var url = "https://docs.google.com/forms/d/e/<form_id>/formResponse?usp=pp_url&entry.231322462=ANO&entry.133135319=1&entry.1743053173=2023-01-15"; var response = UrlFetchApp.fetch(url); //Logger.log(response) }
排查和解决方法:
- 确认entry ID准确性:预填充链接里的entry ID偶尔会有偏差,直接打开表单的网页源码(按F12),搜索
entry.,找到对应输入框的真实entry ID,替换代码里的编号。 - 检查表单权限:确保表单设置为「任何人都可以提交」(不管是否登录Google账号),如果限制了提交人群,UrlFetchApp的请求会被拦截。
- 查看响应日志:把代码里的
//Logger.log(response)注释去掉,运行后查看日志面板,重点看HTTP状态码和响应内容:- 403:权限问题,检查表单访问设置;
- 404:链接里的
<form_id>写错了,核对表单ID; - 200但没提交成功:可能是字段参数不对,比如日期格式不符合表单要求。
- 改用POST方法提交:Google Form更推荐POST方式提交,稳定性更高,试试下面的代码:
function sendForm() { var formUrl = "https://docs.google.com/forms/d/e/<form_id>/formResponse"; var payload = { "entry.231322462": "ANO", "entry.133135319": "1", "entry.1743053173": "2023-01-15", "submit": "提交" // 若表单是英文界面,改成"Submit" }; var options = { method: "post", payload: payload, muteHttpExceptions: true }; var response = UrlFetchApp.fetch(formUrl, options); Logger.log("状态码: " + response.getResponseCode()); Logger.log("响应内容: " + response.getContentText()); }
运行后如果日志显示状态码200,且响应内容里没有错误提示,说明提交成功了。
内容的提问来源于stack exchange,提问作者Lapky
相关产品推荐
相关产品推荐

