【问题标题】:How to format Power Automate's "Create HTML table" to display hyperlink in email pointing to SharePoint如何格式化 Power Automate“创建 HTML 表”以在电子邮件中显示指向 SharePoint 的超链接
【发布时间】:2021-05-05 07:03:48
【问题描述】:

使用 SharePoint 列表作为数据源,我有一个按字段分组的 Power Automate 工作流,然后通过电子邮件向唯一的人员发送适用于他们的内容列表。在电子邮件中,应该有指向可编辑 SP 列表项的超链接。除了电子邮件中的超链接未按预期工作外,我的流程正常。这里是 body of email 而不是预期的 body of email with hyperlinks。我在“创建 HTML 表”步骤中使用“concat('Link')”作为值,并在“replace(replace(replace(body('Create_HTML_table'), 'this article: 。这是illustration of the issue

【问题讨论】:

    标签: sharepoint hyperlink power-automate


    【解决方案1】:

    首先,在可用字段列表中,使用“链接到项目”而不是“标题”作为链接,无论标题是否链接.

    其次;您可以在替换中正常键入特殊字符(例如大于“>”的 HTML 标记),如下所示。不过我相信我给你的两种解决方案可能会提供更流畅的电子邮件。

    逻辑解决方案

    您可以解析创建的 html 并获得更清晰的结果,而不是依赖嵌套的替换函数。

    1. 仍然创建 HTML 表,但在项目值中,放置链接,然后从动态内容中插入 SharePoint ID。例如,如果您运行此命令,列表中第 10 个项目的结果将采用如下格式:

      link10
      
    2. 现在,在您创建表格的 Get items 操作上运行 Apply to each,对于每个项目,您将使用环绕标题的 html 链接中的 Link to item 字段中的所需 url 替换链接#。

    3. 将修改后的代码插入电子邮件中。


    对于流程,我已经尽可能详细地确保逻辑是显而易见的,有理由认为其中大部分可能会被最小化(描述后的图像):

    1. 获取项目 - SharePoint 拉取,无过滤器,只有 3 个项目(汽车、船、飞机)。

    2. 创建 HTML 表格 - 详细信息:

      • 'From' - 来自“获取项目”的“价值”动态内容。

          @{outputs('Get_items')?['body/value']}
        
      • 'Columns' - 一个条目的“自定义”:

        • 'Header' - “项目”
        • 'Value' - "link@{item()?['ID']}"
    3. 变量 - 初始化这些变量:

      • linkVAR - 初始化一个空字符串变量。
      • htmlTabStVAR - 初始化一个空字符串变量。
      • findVAR - 初始化一个空字符串变量。
      • linkVAR - 使用“创建 HTML 表”操作的输出初始化字符串变量。
    4. 应用于每个 - “从先前步骤中选择一个输出”必须与 #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'))
        
    5. 设置您的电子邮件,这是我使用的正文:

      <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 创建后将整个事情最小化为一个步骤,您可以像这样使用电子邮件部分:

    1. 在 HTML 表中,使用不太可能的字符来包装 SharePoint 中的 ID 和 Title 字段。我用过“ĐĐĐ”、“œœœ”和“ĐœĐœĐ”:

      ĐĐĐ@{item()?['ID']}œœœ@{item()?['Title']}ĐœĐœĐ
      
    2. 在电子邮件中,转到正文,并确保您在“代码视图”中放置了以下表达式(单击“&lt;/&gt;”按钮),替换:

    • [COMPANY] 与您的公司子域,

    • [SITE] 与相关的 SharePoint 网站

    • [LISTNAME] 带有相关列表名称

       replace(replace(replace(string, 'ĐĐĐ', '<a href="https://[COMPANY].sharepoint.com/sites/[SITE]/Lists/[LISTNAME]/DispForm.aspx?ID='), 'œœœ', '">'), 'ĐœĐœĐ', '</a>')
      

    【讨论】:

    • 感谢您的广泛演练。我怀疑这个解决方案适用于超链接部分,但不适用于我场景的“按字段分组”部分。具体来说,它看起来会列出所有超链接的项目(完美),但同时会失去按另一个字段列出一组项目。我有一个“人”字段,其中 A 人拥有一艘船、汽车和飞机,B 人拥有一艘船和潜艇。试用后我会反馈的,非常感谢!
    • 啊,我读到:“我有一个按字段分组的 Power Automate 工作流,然后通过电子邮件向唯一的人发送适用于他们的内容列表。” 然后:“除了电子邮件中的超链接没有按预期工作外,我的流程正常工作。”这表明唯一不工作的部分是超链接。我提供了需要插入的逻辑。在任何流程上都应该不言而喻,在更大的流程中还有方法可以完成。但是,如果您提供基本流程(清除私密部分),我可以处理它。也就是说,我相信这可以解决所指出的问题。
    【解决方案2】:

    抱歉,我的表述不够清晰:我们都是正确的...我让小组按照规定工作...但现在我无法让我的小组和您的超链接解决方案并排工作。看起来问题出在“创建 HTML 表”中的 concat() 和/或电子邮件正文中的 replace() 之间。我试图在附件中进一步说明这个问题,请参阅那些。谢谢!

    page 1 of issue; page 2 of issue

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 2017-04-24
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      相关资源
      最近更新 更多