只能执行一种操作吗?

时间:2017-12-29 22:29:52

标签: google-apps-script gmail-addons

我将用一个例子来表明我的问题:

我有一个按钮。单击时,它会根据加载项中的TextInputFields创建邮件草稿。 我有一个验证功能,可以说明字段填写是否正确。

如果我想以某种方式通知用户有关错误的字段,我必须创建一个通知或重建具有错误信息的卡。这些操作可以在正常的Action中返回,但不能与composeAction一起返回(因为composeAction必须使用构建的草稿返回),因此我必须注册composeAction和对按钮的简单操作。

当我点击这种按钮时,只有一个动作执行而另一个动作无效。

有关我如何尝试实施的一些代码:

section.addWidget(CardService.newTextButton()
  .setText('Validate and Create')
  .setComposeAction(CardService.newAction().setFunction('doIt'), CardService.ComposedEmailType.STANDALONE_DRAFT)
  .setOnClickAction(CardService.newAction().setFunction('notify')));

ActionFunctions:

function doIt(event){
  validate the event['formInput'] object;
  if(valid the formInput)
    create  andr return the draft;
  else
    return null;
}

function notify(event){
  validate the event['formInput'] object;
  if(valid the formInput)
    return null;
  else
    return notify or rebuilded card with error info;
}

主要是简单的动作运行,而compose什么都不做。如果我在回调函数中放置Logger.log()函数,则只有一个出现在api日志中。

有人在验证之前尝试过并在同一次点击中创建草稿吗?

1 个答案:

答案 0 :(得分:0)

如何?

var action=CardService.newAction().setFunctionName('myFunction');
var validateCreateButton=CardService.newTextButton()
.setText('Validate & Create')
.setOnClickAction(action);
section.addWidget(validateCreateButton);


function myFunction(e) {
  doit(e);
  notify(e);
}