AppScript+GForms手动运行正常,onFormSubmit时join()方法报错
问题分析与解决方案
当通过Google表单提交触发onFormSubmit时,复选框字段的返回值类型会随选中选项数量变化:
- 选中多个选项时,返回数组
- 选中单个选项时,返回字符串
这就是手动传数组参数时join()正常,但表单触发时报错的核心原因——此时props是字符串,不存在join()方法。
修复代码
修改AddRecord函数中处理props的逻辑,先判断类型再统一转为字符串:
function AddRecord(first_name, last_name, email, dateofbirth, nationality, props, aei1, aei2, aei3, paeijg) { var url = 'https://docs.google.com/spreadsheets/d/1QW2pJY_7i-U1jhxROOtBg0usvDxI6yVdTPzkD38sD0g/edit#gid=0'; var ss= SpreadsheetApp.openByUrl(url); var dataSheet = ss.getSheetByName("Sheet1"); var lastRow = dataSheet.getLastRow(); Logger.log(lastRow); var myIDCol = 1; var myID = dataSheet.getRange(lastRow, myIDCol).getValue()+1; Logger.log(myID); // 统一处理props为字符串 var propsStr = Array.isArray(props) ? props.join() : props; dataSheet.appendRow([myID, first_name, last_name, email, dateofbirth, nationality, propsStr, aei1, aei2, aei3, paeijg]); }
可选优化
如果需要保持单个选项也用数组格式处理(比如统一分隔符样式),可以调整为:
var propsArr = Array.isArray(props) ? props : [props]; var propsStr = propsArr.join(", "); // 自定义分隔符,例如逗号加空格
内容的提问来源于stack exchange,提问作者Olivier Caignart
相关产品推荐
相关产品推荐

