将其他参数传递给Apps Script事件对象

时间:2018-02-11 16:03:40

标签: google-apps-script callback

我在Apps脚本中遇到了很多关于回调和范围的问题。我有以下功能,可以创建一个Gmail加载项部分,其中包含当前打开的电子邮件中每个附加文件的复选框:

plot(c(1,2,3),xlim=c(1,8),ylim=c(1,10),xlab="x index", ylab="y values")
points(c(6,7,8),c(5,6,7))

所有内容都按预期显示,但我希望用户也能够选择要取消选中的文件以供日后处理。 在我的checkboxAltered函数中,我想处理用户选择输入操作,这是唯一的方法(据我从文档中学到的。请告诉我,我是不是错了!)。它目前是一个空函数,仅用于检查我的理解程度:

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 );
}
事件对象

function checkboxAltered( e ){ Logger.log( e ); Logger.log( selections.length ); } 始终为eundefined,一个(先前已初始化并已检查)全局bool数组,其中包含每个附件的项目,在checkboxAltered中始终只是selections

我做错了什么? 如何使用setParameters(Object)告诉回调函数内部用户单击了哪个复选框? 是否无法从回调函数访问全局变量?

1 个答案:

答案 0 :(得分:0)

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