Как узнать, установлен ли флажок SelectionInput или нет в обратном вызове?

Как узнать, отмечен ли элемент флажка 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
}

person Cameron McNair    schedule 23.05.2018    source источник
comment
Если вы используете Stackdriver для ведения журнала (через console.), что вы получаете? Вы часто можете взаимодействовать со структурой там (или, по крайней мере, получить к ней доступ для более чем одного выполнения).   -  person tehhowch    schedule 23.05.2018
comment
В этом вопросе SO обсуждается аналогичная проблема. Хотя единственный ответ относится к .setParameters ОП неясно, решило ли это проблему. Вы могли бы попробовать.   -  person Casper    schedule 23.05.2018


Ответы (2)


Вы можете получить состояние флажка, просмотрев formInput в обратном вызове onChange.

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
    }
}
person Sabbu    schedule 23.05.2018
comment
Спасибо за вашу помощь! Я не понимал, что e.formInput.chkSaveAttachments имеет значение null, когда флажок не установлен. Мне вообще не нужно использовать кеш, я могу просто использовать !!e.formInput.chkSaveAttachments в обратном вызове сохранения кнопки, и он отлично работает - person Cameron McNair; 24.05.2018

Как указано здесь, formInputs свойство было бы полезно здесь.

Для многозначных виджетов, таких как флажки, вместо этого вы можете прочитать каждое значение из formInputs.

В formInputs все выбранные параметры будут в массиве (e.formInputs.chkSaveAttachments). Следовательно, в вашей функции saveCallback вы можете проверить как

e.formInputs.chkSaveAttachments.indexOf('chkSaveAttachmentsValue') > -1
person Biren Prajapati    schedule 23.05.2018