如何判断回调中是否选中了SelectionInput复选框?

时间:2018-05-23 00:03:50

标签: google-apps-script gmail-addons

如何判断回调中是否选中了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
}

2 个答案:

答案 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