在Google App Maker中运行替换脚本

时间:2018-03-11 17:09:14

标签: google-apps-script google-app-maker

我想添加一个服务器脚本,在填充文本框时替换特殊字符。 " onValueEdit"的信息常规状态: 只要用户编辑此窗口小部件的值,此脚本就会在客户端上运行。可以使用参数窗口小部件引用窗口小部件,窗口小部件的新值存储在newValue中。与onValueChange()不同,它仅在用户更改窗口小部件的值时运行;它不会响应绑定或以编程方式设置值而运行。

因此,我构建了以下服务器脚本,该脚本应该从文本框中获取文本,覆盖特殊字符并替换文本框中的文本。但是当我将脚本添加到" onValueEdit"事件,Google App Maker返回"功能未定义"。

function cleanup(input, output) {
  if (input !== null) {
    output = input.trim();
    output = output.replace('ß','ss');
    output = output.replace('ä','ae');
    output = output.replace('ö','oe');
    output = output.replace('ü','ue');
    return output;
  }
}

1 个答案:

答案 0 :(得分:1)

如果您只想在客户端进行此更改,那么执行此操作的方法是将此代码添加到onValueEdit事件处理程序中:

// onValueEdit input's event handler
if (newValue !== null) {
  output = newValue.trim();

  output = output.replace('ß','ss');
  ...

  widget.value = output;
}

如果您需要在保留数据库之前安全地强制执行此覆盖,那么您需要使用Model Events

// onBeforeCreate and onBeforeSave events
if (record.FieldToChange !== null) {
  record.FieldToChange = record.FieldToChange.trim();
  record.FieldToChange = record.FieldToChange.replace('ß','ss');
  ...
}

使用这种方法,您不需要任何客户端代码,因为在服务器上进行的所有更改都应自动同步回客户端。