1

我对 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 ) 在回调函数内部告诉用户单击了哪个复选框?回调函数不能访问全局变量吗?

4

1 回答 1

0

查看 CardService 文档,Action该类有一个setParameters()方法。如果要将自定义参数传递给回调,则需要使用该方法。

于 2018-02-11T18:18:09.483 回答