У меня много головной боли с обратными вызовами и областями в скрипте приложений. У меня есть следующая функция, которая создает раздел надстройки Gmail с флажком для каждого вложенного файла в открытом в данный момент электронном письме:
function createAttachmentsSection( attachments ){
var widget = CardService.newSelectionInput()
.setFieldName( 'selectedFiles' )
.setType( CardService.SelectionInputType.CHECK_BOX )
.setOnChangeAction(
CardService.newAction()
.setFunctionName( 'checkboxAltered' )
);
for ( var i = 0 ; i < attachments.length; i++ )
widget.addItem( attachments[i].getName(), '' + i , true )
return CardService.newCardSection().addWidget( widget );
}
Все отображается так, как ожидалось, но я хочу, чтобы пользователь также мог выбирать, какие файлы он хочет снять для последующей обработки. В моей функции checkboxAltered я хочу обрабатывать действия ввода выбора пользователя, что является единственным способом (насколько я узнал из документации. Пожалуйста, скажите мне, если я ошибаюсь!). В настоящее время это пустая функция, используемая только для проверки того, как мало я понимаю:
function checkboxAltered( e ){
Logger.log( e );
Logger.log( selections.length );
}
e
, объект события, всегда undefined
здесь. И selections
, (ранее инициализированный и проверенный) глобальный логический массив с элементом для каждого вложения, всегда просто []
внутри checkboxAltered.
Что я делаю не так? Как я могу использовать setParameters( Object ), чтобы сообщить внутри функции обратного вызова, какой флажок был нажат пользователем? Доступны ли глобальные переменные из функций обратного вызова?