Google App Script Web App问题:表单数据无法按正确格式存入Google Sheets
解决Agent ID格式清洗失效问题
原代码中Agent ID的清洗逻辑存在两个核心问题:
- 使用
split(/[\s,]+/g)会将ID内部的逗号(比如千位分隔符)误判为分隔符,导致单个ID被拆分为多个片段 - 仅去除字母字符,未清理ID内的其他非数字符号,也没有过滤拆分后产生的空字符串
以下是修正后的完整Code.gs代码:
function doGet() { var template = HtmlService.createTemplateFromFile('Page'); return template.evaluate(); } function processForm(form) { var ss = SpreadsheetApp.openById('SPREADSHEET_ID'); var sheet = ss.getSheetByName('Submissions'); var ref = form.reference; // 修正后的Agent ID清洗逻辑 var agentIds = form.agentIds .split(/[\s,]+/) // 按空格、逗号、换行符拆分输入内容 .map(id => id.replace(/\D/g, '')) // 移除每个ID片段中的所有非数字字符(保留前导零) .filter(id => id.trim() !== '') // 过滤掉空字符串(避免多余逗号) .join(','); var values = sheet.getRange('B:B').getValues().flat(); if (values.includes(ref)) { return "This reference number has already been used for a previous roster submission"; } else { sheet.appendRow([new Date(), ref, agentIds]); return "Thanks! Your roster has been submitted successfully"; } }
关键改动说明:
split(/[\s,]+/):\s包含换行符,能兼容用户"每行一个ID"的输入格式replace(/\D/g, ''):全局移除所有非数字字符,彻底清理ID内的逗号、空格等错误输入,同时保留Agent ID的前导零filter(id => id.trim() !== ''):过滤拆分后产生的空字符串,避免最终结果出现连续逗号的情况
这样处理后,无论用户输入是12,345 600,123、001234\n00123456还是带有多余空格/逗号的格式,最终都会被转换为符合预期的数字串格式。
内容的提问来源于stack exchange,提问作者JamesReed68
相关产品推荐
相关产品推荐

