首先,在可用字段列表中,使用“链接到项目”而不是“标题”作为链接,无论标题是否链接.
其次;您可以在替换中正常键入特殊字符(例如大于“>”的 HTML 标记),如下所示。不过我相信我给你的两种解决方案可能会提供更流畅的电子邮件。
逻辑解决方案
您可以解析创建的 html 并获得更清晰的结果,而不是依赖嵌套的替换函数。
-
仍然创建 HTML 表,但在项目值中,放置链接,然后从动态内容中插入 SharePoint ID。例如,如果您运行此命令,列表中第 10 个项目的结果将采用如下格式:
link10
-
现在,在您创建表格的 Get items 操作上运行 Apply to each,对于每个项目,您将使用环绕标题的 html 链接中的 Link to item 字段中的所需 url 替换链接#。
-
将修改后的代码插入电子邮件中。
对于流程,我已经尽可能详细地确保逻辑是显而易见的,有理由认为其中大部分可能会被最小化(描述后的图像):
-
获取项目 - SharePoint 拉取,无过滤器,只有 3 个项目(汽车、船、飞机)。
-
创建 HTML 表格 - 详细信息:
-
变量 - 初始化这些变量:
-
linkVAR - 初始化一个空字符串变量。
-
htmlTabStVAR - 初始化一个空字符串变量。
-
findVAR - 初始化一个空字符串变量。
-
linkVAR - 使用“创建 HTML 表”操作的输出初始化字符串变量。
-
应用于每个 - “从先前步骤中选择一个输出”必须与 #2 中的表格相同。
-
Set htmlTabStVAR - 这应该是 Set htmlTabEnVAR 的输出
@{variables('htmlTabEnVAR')}
-
设置 findVAR - 这将设置替换函数用于查找正确项目的变量:
link@{items('Apply_to_each')?['ID']}
-
Set linkVAR - 这将为链接设置所需的 HTML:
<a href="@{items('Apply_to_each')?['{Link}']}">@{items('Apply_to_each')?['Title']}</a>
-
Set htmlTabStVAR - 这应该是 Set htmlTabEnVAR 的输出
replace(variables('htmlTabStVAR'), variables('findVAR'), variables('linkVAR'))
-
设置您的电子邮件,这是我使用的正文:
<p>this works</p>
<p>table:</p>
@{variables('htmlTabEnVAR')}
这是流程图:
这是电子邮件和生成的 HTML(来自流程历史记录):
<p>this works</p>
<p>table:</p>
<table>
<thead>
<tr>
<th>item</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<a href="https://yourCompany.sharepoint.com/sites/spSite/_layouts/15/listform.aspx?PageType=4&ListId=ETCETCETC">car</a>
</td>
</tr>
<tr>
<td>
<a href="https://yourCompany.sharepoint.com/sites/spSite/_layouts/15/listform.aspx?PageType=4&ListId=ETCETCETC">boat</a>
</td>
</tr>
<tr>
<td>
<a href="https://yourCompany.sharepoint.com/sites/spSite/_layouts/15/listform.aspx?PageType=4&ListId=ETCETCETC">plane</a>
</td>
</tr>
</tbody>
</table>
要最小化 Apply to each,您可以删除链接并查找变量并在 htmlTabEnVAR 的表达式中使用这个更长的替换函数:
replace(variables('htmlTabStVAR'), concat('link', items('Apply_to_each')?['ID']), concat('<a href="', items('Apply_to_each')?['{Link}'], '">', items('Apply_to_each')?['Title'], '</a>'))
减少一步
公平警告;如果您不打算使用我在下面使用的唯一字符,请测试哪些字符在流中无法很好地解析,首先,我发现了一些导致问题的字符,例如“æ”。
因此,为了在 HTML 创建后将整个事情最小化为一个步骤,您可以像这样使用电子邮件部分:
-
在 HTML 表中,使用不太可能的字符来包装 SharePoint 中的 ID 和 Title 字段。我用过“ĐĐĐ”、“œœœ”和“ĐœĐœĐ”:
ĐĐĐ@{item()?['ID']}œœœ@{item()?['Title']}ĐœĐœĐ
-
在电子邮件中,转到正文,并确保您在“代码视图”中放置了以下表达式(单击“</>”按钮),替换:
-
[COMPANY] 与您的公司子域,
-
[SITE] 与相关的 SharePoint 网站
-
[LISTNAME] 带有相关列表名称
replace(replace(replace(string, 'ĐĐĐ', '<a href="https://[COMPANY].sharepoint.com/sites/[SITE]/Lists/[LISTNAME]/DispForm.aspx?ID='), 'œœœ', '">'), 'ĐœĐœĐ', '</a>')