在 PowerApps 中构建电子邮件托管电子邮件功能

时间:2021-07-27 23:44:58

标签: list sharepoint powerapps power-automate

非常感谢有关如何在 PowerApps/Automate 中使用家庭电子邮件功能的指导。 (家庭是一个特定的邮寄行业术语)

我有一个 PowerApps 工具,可以在现场收集扫描代码(实际上,我们正在使用 QR 代码扫描仪并疯狂地扫描盒子)。例如,“RITM1234567”是一个扫描码。

每个扫描代码都与一个客户相关联。例如,“RITM1234567”属于“爱德华”。当然,“爱德华”映射到爱德华的电子邮件地址(例如“Edward@EdwardDesk.com”)

每个扫描码还与一个描述相关联,例如“香蕉”。

在我的扫描码列表中,有很多扫描(一次可以有 1-200 个或更多扫描码)。那些要给爱德华的人是从 0 到所有的人。但我只想给爱德华发一封单一的电子邮件(家庭),就像这样:

Hey Edward, the following items are ready for you to eat:

RITM1234567 - banana
RITM7654321 - banana
RITM7162534 - grape

Bring a fork and come on over!

所以,我提到的那些关联是共享点列表的一部分,例如:

[RITM VALUE] [CUSTOMER NAME] [CUSTOMER EMAIL]       [ITEM DESCRIPTION]
RITM1234567  Edward          Edward@EdwardDesk.com  banana
RITM7654321  Edward          Edward@EdwardDesk.com  banana
RITM7162534  Edward          Edward@EdwardDesk.com  banana

如果有其他人的扫描件,那么我想在同一个 SharePoint 列表中查找它们并向他们发送电子邮件。

因此,如果扫描的集合是 10 个项目:Edward 5 个,Pat 3 个,Kit 2 个

那么它应该发送三封电子邮件,而不是十封。

考虑到 PowerApps 似乎有一些奇怪的限制(没有数组或其他访问数据的主要方式),您将如何着手解决这个问题? (见脚注)

我承认它有点高级,所以即使是高级建议也可能有用。而且我通常可以遵循伪代码。

谢谢你,

爱德华

  1. 思考:是否可以通过查看扫描值列表并说“如果此值出现在引用列表的 x 列中,则向包含这些其他值的集合中添加新项目”来构建集合/数据表该参考列表中同一记录中的内容”......?

-=-=-=-=-

脚注:我之前在 Excel-VBA 应用程序中解决了这个问题,方法是创建一个包含所有单个条目的新工作表,按客户名称排序,然后从底部开始进行重复数据删除。然后我在一个大循环中做了很多连接来创建每封电子邮件的主题/正文信息。但我不确定在这里我会怎么做。 Excel VBA 应用程序已经持续了几年,但我的任务是用我们环境中更广泛的东西(因此是 Powerapps Canvas 应用程序)替换它。数据表是一种适合于此的结构吗?

2 个答案:

答案 0 :(得分:0)

如果你想从 powerapps 中做到这一点,第一步是创建一个集合,其中包含按人分组的所有扫描代码,然后你使用 ForAll 迭代集合,每个组就像一个集合中的一个集合。

这个想法是为每个拥有一组代码的人发送一封电子邮件,然后可以像收集一样遍历每个记录。

ForAll(
    my_colecction.persons,
    ForAll(
        ThisRecord.persons,
        Office365Outlook.SendEmail(
            person.email,
            "Subject",
            "body"
        )
    )
);

可以通过流直接从共享点执行此操作。

答案 1 :(得分:0)

鉴于此集合

  • 适应您的用例
ClearCollect(colPersons,
    {id: 1, email: "test@test.com"},
    {id: 2, email: "test@test.com"},
    {id: 3, email: "test@test.com"},
    {id: 4, email: "test@test.com"},
    {id: 5, email: "test@test.com"},
    {id: 6, email: "test1@test.com"},
    {id: 7, email: "test1@test.com"},
    {id: 8, email: "test1@test.com"},
    {id: 9, email: "test2@test.com"},
    {id: 10, email: "test2@test.com"}
)

这只会向不同的电子邮件地址发送电子邮件:

  • 大致翻译为:
    • 按不同的 email 对集合进行分组
    • 对于组 (3) 中的每封电子邮件,向他们发送一封以“主题”为主题、以“正文”为正文的电子邮件。
ForAll(
    GroupBy(
        colPersons, 
        "email", 
        "other"
    ),
    Office365Outlook.SendEmailV2(
        ThisRecord.email, 
        "Subject", 
        "Body"
    )
)