我对 Apps 脚本中的回调和范围感到头疼。我有以下功能,它为当前打开的电子邮件中的每个附件创建一个带有复选框的 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 ) 在回调函数内部告诉用户单击了哪个复选框?回调函数不能访问全局变量吗?