Google Apps Script CardService Switch值未出现在formInputs中如何获取
Google Apps Script 卡片服务(Card Service)的 Switch 控件取值逻辑和普通输入控件不同,你遇到的情况是该控件的默认设计导致的,解决方法如下:
取值规则
- Switch 处于选中状态时,你通过
setFieldName配置的键才会出现在formInputs对象中,对应值为你通过setValue设置的内容 - Switch 处于未选中状态时,对应的键不会出现在
formInputs对象中,直接取值会返回undefined - 额外注意:
formInputs中所有控件的取值均为数组类型,即便是 Switch 这类单值控件,也需要取数组第0位获取实际值
正确取值示例
你可以在表单提交处理函数或者 Switch 的 onChange 处理函数中用以下逻辑判断取值:
// 表单提交处理函数示例 function handleFormSubmit(e) { const switchFieldKey = "form_input_switch_key"; let switchStatus; // 判断字段是否存在,存在即为选中状态 if (e.formInputs.hasOwnProperty(switchFieldKey)) { switchStatus = e.formInputs[switchFieldKey][0]; // 取数组第0位获取设置的value } else { switchStatus = false; // 未选中状态,可自定义返回值 } // 后续业务逻辑 console.log("开关取值为:", switchStatus); }
常见问题排查
如果按照上述逻辑仍然取不到值,可检查以下配置:
- 确认
setFieldName设置的字段名和取值时的键名完全一致,大小写敏感 - 不要给多个控件设置相同的
fieldName,会导致值被覆盖 - 如果是在 Switch 绑定的
onChangeAction对应处理函数中取值,需要从e.commonEventObject.formInputs对象中获取字段,取值规则和上述一致
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

