如何让Google Sheets表单提交按钮同时提交数据并跳转页面
解决表单提交后跳转成功页面的问题
当前代码的核心问题是:在google.script.run的成功回调函数中没有执行任何反馈逻辑,导致数据提交后页面无变化。只需在成功回调内添加跳转或页面更新代码即可实现需求,以下是两种可行方案:
方案1:跳转到单独的"操作成功"页面
如果你已经创建了一个独立的success.html成功页面(与表单页面同目录),修改提交按钮的回调逻辑如下:
$(document).on('click', '.btn_send_contact', function(event) { event.preventDefault(); var e1 = $(this).closest('.screen_data'); var a1={ user_name:e1.find('.user_name').val(), user_email:e1.find('.user_email').val(), user_Username:e1.find('.user_Username').val(), user_msg:e1.find('.user_msg').val(), user_dttm:moment().format("YYYY-MM-DD HH:MM:SS A"), }; google.script.run.withSuccessHandler(function(data) { if(data.status == "success") { // 替换为你的Web App部署地址+成功页面路由 window.location.href = "https://script.google.com/macros/s/你的部署ID/exec?page=success"; } }).AddNewContact(a1) });
同时需要在Google Apps Script的doGet函数中添加路由逻辑,用于返回成功页面:
function doGet(e) { var page = e.parameter.page || "home"; if(page === "success") { return HtmlService.createHtmlOutputFromFile("success"); } else { return HtmlService.createHtmlOutputFromFile("你的表单页面文件名"); } }
方案2:在当前页面直接显示成功提示
无需额外创建页面,直接替换当前表单区域的内容为成功提示:
$(document).on('click', '.btn_send_contact', function(event) { event.preventDefault(); var e1 = $(this).closest('.screen_data'); var a1={ user_name:e1.find('.user_name').val(), user_email:e1.find('.user_email').val(), user_Username:e1.find('.user_Username').val(), user_msg:e1.find('.user_msg').val(), user_dttm:moment().format("YYYY-MM-DD HH:MM:SS A"), }; google.script.run.withSuccessHandler(function(data) { if(data.status == "success") { // 获取表单容器,替换为成功提示 var e0 = $(document).find('.screen_data'); e0.html(` <div style="text-align:center; padding:50px;"> <h3>操作成功!</h3> <p>感谢你的提交,后续操作请返回首页</p> <button class="btn_menu" screen_name="home">返回首页</button> </div> `); } }).AddNewContact(a1) });
注意事项
- 确保你的
AddNewContact函数确实返回了{status: "success"}格式的对象,否则回调不会触发对应逻辑。 - 方案1中的部署地址需要替换为你自己Web App的实际部署URL。
内容的提问来源于stack exchange,提问作者Danielh
相关产品推荐
相关产品推荐

