0

我想直接从输入流中获取管道的名称,这样我就可以使用这些值在电子邮件发件人快照中生成 HTML 表并编写报告,而无需先生成文件,这样会更方便。 

我的代码看起来像这样:

"<p>Hello,</p>" +

"<p><strong>Message</strong></p>"

+
"<table class=\"table table-striped\">
<thead class=\"thead-dark\">
  <tr>
    <th>Pipelines</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>" + $Pipeline + "</td>
  </tr>
  </tbody>
</table>"

但是,我的问题是,虽然它确实从输入流中获取值,但它会根据输入文档的数量重复第一行。如果我有 5 个输入文档,我会得到例如Pipeline_1重复 5 次。表达式不处理 之后的值Pipeline_1

我尝试使用该$("Pipeline:contains(Pipeline_1)");方法,但是,此表达式不起作用,表达式也不起作用match

有什么建议么?

4

1 回答 1

0

您可以使用“电子邮件发件人”快照轻松地将传入的文档作为 HTML 表格发送。

来自 SnapLogic 文档

对于“HTML 表格”类型,Snap 期望在模板正文中查找和标记。输入视图中的一个 Document 对应于 HTML 表的一行。对于每个 Document,Snap 获取一个由 Table-data path 属性引用的地图数据,并在消息正文的 HTML 表中插入一行。表数据路径属性还可以引用地图数据数组。Snap 使用地图数据的键集来组成表的列标题。Snap 批量处理整个文档流以生成键的超集。

管道:

以下是我为证明这一点而制作的测试管道。

测试管道

输入:

以下是我在JSON 生成器快照中配置的输入 JSON(根据您提供的描述创建)。

[
    {
        "Pipeline": "Pipeline_1",
        "State": "Completed",
        "Start_Time": "2019-12-18",
        "Documents": 1
    },
    {
        "Pipeline": "Pipeline_2",
        "State": "Completed",
        "Start_Time": "2019-12-17",
        "Documents": 200
    },
    {
        "Pipeline": "Pipeline_3",
        "State": "Completed",
        "Start_Time": "2019-12-18",
        "Documents": 10
    },
    {
        "Pipeline": "Pipeline_4",
        "State": "Failed",
        "Start_Time": "2019-12-16",
        "Documents": 25
    }
]

配置:

以下是我从 Snaplogic 文档中获得的电子邮件模板。

<!DOCTYPE html> 
<html> 
<head> 
     <title>Email Snap HTML Table</title> 
<style type="text/css"> table.Snap {background-color:transparent;border-collapse:collapse;width:100%;} table.Snap th, 
      table.Snap td {text-align:center;border:1px solid black;padding:5px;} table.Snap th {background-color:AntiqueWhite;} 
</style> 
</head> 
<body> 
        <p>Dear SnapLogic Users:</p> 
        <p>This is a sample Snap email with HTML Table email type.</p> 
        <table class="Snap"> 
        </table> 
        <p></p> 
        <p>Regards,</p> 
        <p>SnapLogic Staff</p> 
</body> 
</html>

除了设置模板之外需要配置 -

  • 电子邮件类型:将此设置为HTML 表格
  • 表数据路径:将$其设置为根元素
  • 批量大小:将其设置为您需要在电子邮件中一次发送的行数

以下是我在电子邮件发件人快照中使用的设置的屏幕截图。

电子邮件发件人设置

$在 Table-data 路径中使用时,Snap 会创建一个 HTML 表格,其中 Template Body 具有 HTML 表格标签 ( <table></table>)。因此,表格会自动填充传入的数据。

注意: 文档结构需要是扁平的。

就批量大小而言 -

如果 Snap 从输入视图接收到的文档数量达到给定的 Batch 大小,则 Snap 会使用 HTML 表格编写一封电子邮件并将其发送到服务器。如果需要发送所有文档,则会生成多封电子邮件。如果剩余任意数量的未发送表行,则 Snap 在管道执行结束时发送最后一条消息。

结果:

以下是我收到的邮件截图。

电子邮件

参考:

于 2019-12-18T16:03:55.307 回答