如何判断回调中是否选中了SelectionInput复选框项?我有以下内容:
section.addWidget(CardService.newSelectionInput()
.setType(CardService.SelectionInputType.CHECK_BOX)
.setFieldName("chkSaveAttachments")
.addItem("Save Attachments", "chkSaveAttachmentsValue", true));
我的卡上有一个按钮,可以触发回叫。从回调中,我可以访问的是值(" chkSaveAttachmentsValue")但我无法判断该框是已选中还是未选中。
function saveCallback(e) {
Logger.log(e.formInput.chkSaveAttachments); //prints "chkSaveAttachmentsValue"
Logger.log(e.formInput.chkSaveAttachments.chkSaveAttachmentsValue) //undefined
Logger.log(e.formInput.chkSaveAttachments.chkSaveAttachmentsValue.selected) //undefined
}
答案 0 :(得分:1)
您可以通过查看onChange回调中的formInput来获取复选框的状态。
CardService.newSelectionInput()
.setType(CardService.SelectionInputType.CHECK_BOX)
.setFieldName("chkSaveAttachments")
.addItem("Save Attachments", "chkSaveAttachmentsValue", true).setOnChangeAction(selectionAction)
var selectionAction = CardService.newAction().setFunctionName("selectionAction").setParameters({"obj": obj});
function selectionAction(e) {
//formInput value comes only when it is selected.
var selected = !!e.formInput.chkSaveAttachments;
// you can set and access paramters in the onchange action for further use.
if(selected) {
// cache the state using cacheservice
} else {
// cache the state using cacheservice
}
}
答案 1 :(得分:0)
如上所述here, formInputs 属性在此处会有所帮助。
对于复选框等多值小部件,您可以从 formInputs 中读取每个值。
在formInputs中,所有选定的选项都将存在于数组中(e.formInputs.chkSaveAttachments)。
因此,在saveCallback
函数中,您可以检查为
e.formInputs.chkSaveAttachments.indexOf('chkSaveAttachmentsValue') > -1