You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:09:22