UrlFetchApp.fetch提交Google Form空白响应问题排查
问题:Google Form批量提交仅生成空白响应,仅第一部分数据可提交
我需要将包含370名成员的表格数据批量提交到Google Form,以此为每人生成唯一的表单编辑URL。测试环境下该功能可正常实现,但目标表单存在异常:脚本能根据表格信息生成正确的预填URL,提交后却仅生成带时间戳的空白响应。
已完成以下排查:
- 关闭「收集邮箱地址」选项后问题仍存在
- 确认所有Entry ID正确(从预填URL提取,并通过浏览器开发者工具二次核对)
- 将表单中所有问题设为可选
- 未启用任何问题验证规则
搭建的测试环境中,测试代码可正常提交数据,但将目标表单代码调整为相同结构后,仍仅提交时间戳。后续测试发现,仅能提交Google Form第一部分的问题响应,怀疑后续部分数据被阻止填充,求解决方案。
目标表单代码
function submitFormWithFourteenVariables() { // 步骤1:打开Google表格并获取相关数据 var spreadsheet = SpreadsheetApp.openById('1ap4e85u8Nog2utavbOnFcpkt5YjYMdVjtFkueSk8enc'); // 替换为你的表格ID var sheet = spreadsheet.getSheetByName('Sheet3'); // 替换为正确的工作表名称 // 步骤2:获取A到N列的数据(14个变量) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, 14); // 从第2行开始,A到N列 var formEntries = dataRange.getValues(); // 以二维数组格式获取所有值 // 步骤3:预填表单基础URL let baseUrl = "https://docs.google.com/forms/d/e/1FAIpQLSfOZeHtpAvX0QVFLCsHKMkOpTQso9uOCXZ8aE85ohlhM7wQIQ/formResponse"; // 14个变量对应的Entry字段 let entryField1 = 'entry.280771258'; // A列 let entryField2 = 'entry.937303683'; // B列 let entryField3 = 'entry.1749954787'; // C列 let entryField4 = 'entry.1148000645'; // D列 let entryField5 = 'entry.1018738857'; // E列 let entryField6 = 'entry.864137965'; // F列 let entryField7 = 'entry.285531524'; // G列 let entryField8 = 'entry.803278540'; // H列 let entryField9 = 'entry.824658702'; // I列 let entryField10 = 'entry.903515294'; // J列 let entryField11 = 'entry.1136164170'; // K列 let entryField12 = 'entry.77414810'; // L列 let entryField13 = 'entry.1972082954'; // M列 let entryField14 = 'entry.342786861'; // N列 // 步骤4:遍历formEntries中的每一行数据 formEntries.forEach(function(entry) { // 构建该条数据的完整提交URL let submitUrl = `${baseUrl}?${entryField1}=${encodeURIComponent(entry[0])}&${entryField2}=${encodeURIComponent(entry[1])}&${entryField3}=${encodeURIComponent(entry[2])}&${entryField4}=${encodeURIComponent(entry[3])}&${entryField5}=${encodeURIComponent(entry[4])}&${entryField6}=${encodeURIComponent(entry[5])}&${entryField7}=${encodeURIComponent(entry[6])}&${entryField8}=${encodeURIComponent(entry[7])}&${entryField9}=${encodeURIComponent(entry[8])}&${entryField10}=${encodeURIComponent(entry[9])}&${entryField11}=${encodeURIComponent(entry[10])}&${entryField12}=${encodeURIComponent(entry[11])}&${entryField13}=${encodeURIComponent(entry[12])}&${entryField14}=${encodeURIComponent(entry[13])}`; Logger.log(`提交URL: ${submitUrl}`); try { let response = UrlFetchApp.fetch(submitUrl); Logger.log(`提交成功:${entry.join(', ')} - 响应码: ${response.getResponseCode()}`); } catch (error) { Logger.log(`提交失败:${entry.join(', ')} - ${error.message}`); } }); }
测试环境代码
function submitFormWithSixVariables() { // 步骤1:打开Google表格并获取相关数据 var spreadsheet = SpreadsheetApp.openById('1eVwjsRRF43hlDvXQxiQtEGYdV87mlolFMnuATbPizL4'); // 替换为你的表格ID var sheet = spreadsheet.getSheetByName('ToBecomeGoogleFormSubmission'); // 替换为正确的工作表名称 // 步骤2:获取A到F列的数据(6个变量) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, 6); // 从第2行开始,A到F列 var formEntries = dataRange.getValues(); // 以二维数组格式获取所有值 // 步骤3:预填表单基础URL let baseUrl = "https://docs.google.com/forms/d/e/1FAIpQLSclC-9yLKeehZil5hxMxau-x_l4eey9yXI1Ir5KwyU1jND2Gg/formResponse"; // 6个变量对应的Entry字段 let entryField1 = 'entry.2014725632'; // A列 let entryField2 = 'entry.624238492'; // B列 let entryField3 = 'entry.1011223783'; // C列 let entryField4 = 'entry.1953523146'; // D列 let entryField5 = 'entry.53603353'; // E列 let entryField6 = 'entry.1886927027'; // F列 // 步骤4:遍历formEntries中的每一行数据 formEntries.forEach(function(entry) { // 构建该条数据的完整提交URL let submitUrl = `${baseUrl}?${entryField1}=${encodeURIComponent(entry[0])}&${entryField2}=${encodeURIComponent(entry[1])}&${entryField3}=${encodeURIComponent(entry[2])}&${entryField4}=${encodeURIComponent(entry[3])}&${entryField5}=${encodeURIComponent(entry[4])}&${entryField6}=${encodeURIComponent(entry[5])}`; Logger.log(`提交URL: ${submitUrl}`); try { let response = UrlFetchApp.fetch(submitUrl); Logger.log(`提交成功:${entry[0]}, ${entry[1]}, ${entry[2]}, ${entry[3]}, ${entry[4]}, ${entry[5]} - 响应码: ${response.getResponseCode()}`); } catch (error) { Logger.log(`提交失败:${entry} - ${error.message}`); } }); }
内容的提问来源于stack exchange,提问作者Josh Kumin
相关产品推荐
相关产品推荐

