如何使用Power automation在SharePoint Modern站点中循环使用多个列表项

时间阅读: 大约20 - 30分钟< / td > < / tr >
用于: O365工程师,SharePoint架构师< / td > < / tr >
主要结论: 在这篇博文中, 我将带您, 循序渐进的, 如何使用Power automation在SharePoint现代站点中循环使用多个列表项.< / td > < / tr >

我在2015年写过一篇文章,我向您展示了如何使用SharePoint 2010 workflow循环遍历列表中的多个项目. 在这篇文章中, 我将带领你通过现代版本如何实现同样的结果与一个更精简的电子邮件. **采用Power automation的工作方式(与旧的工作流程相反), 实际上,我们可以用不同的方法达到相同的结果. 我们将在以后的文章中看到这一点. **

工作流将接受任务列表中输入的项目,并在需要时检查每个任务的状态. 我们将使用Power automation中的递归操作来实现这一点. 我意识到可能有其他方法可以得到同样的结果,但你可以将这个过程用于任何你想要的事情,而不仅仅是项目. 记住那件事.

在本教程中,我们使用Office 365和 电力自动化. 我们将在SharePoint在线上创建两个列表和两个工作流.

**点击任何图片查看大图**

步骤1 -创建列表
如果您不愿意从头创建列表,您可以获得列表模板 在这里 但您将需要使用 SharePoint在线管理Shell 允许保存和添加列表模板:

美元adminSiteUrl = " http://YourTenant-admin.sharepoint.com/”
美元信誉= Get-Credential
Connect-SPOService $adminSiteUrl -Credential $cred
Set-SPOSite“http://YourTenant.sharepoint.com/sites/YourSite“-DenyAddAndCustomizePages 0

运行PowerShell脚本后,您将在Web Designer Galleries中看到列表模板,您可以在其中上传所提供的两个列表模板. 这当然是假设你使用的是SharePoint现代站点. 如果它是一个经典的网站,您不必运行脚本.

如果你从头开始创建列表,不能运行脚本:
表名称: 项目任务. 这是我们将使用的主列表,其中包含分配给用户的所有任务. 请确保Title字段在此列表中不是必需的. 我通常把这块地藏起来,当你 允许管理内容类型(点击图片查看大图):

让我们隐藏标题字段(点击图片查看更大的版本):

专栏: 受让人-个人或团体. 必需字段.
专栏: dueddate -日期和时间. 必填字段,日期,标准格式.
专栏: 状态-选择下拉菜单. 必填字段,包含“新建”、“在过程中”、“已完成”和“已取消”选项.
专栏: 任务交付—多行文本. 必填字段,纯文本.
专栏: assignneeemailaddress -单行文本 . 不是必需的. 我通常把这块地藏起来.

表名称: 邮件来源. 此列表包含编译电子邮件所需的所有必要的HTML和计数. 此列表不应由任何用户编辑. 在这个列表中,我还隐藏了Title字段,并确保它不是必需的,如上所示.
专栏: assignneeemailaddress -单行文本.
专栏: ActiveTasks——数量. 小数位数= 0,默认值= 0.
专栏: WeeklySummaryRunDate -单行文本.
专栏: 电子邮件Body -多行文本,纯文本.
专栏: HTMLCreated——数量. 小数位数= 0,默认值= 0.

步骤2 -使用Power automation创建工作流
登录到 电力自动化 点击左侧导航区“My Flows”:

点击“新建”,选择“自动从空白”:

在“构建自动流程”窗口中,输入“Add Item”作为流程名称. 在“选择您的流触发”字段中, 输入“Created”,这样我们就可以找到SharePoint触发器的“When an item is Created”. 点击“当项目创建时”,然后点击“创建”按钮:

如果您添加的触发器尚未展开,只需单击蓝色栏展开它:

重命名我们添加的每个操作是非常重要的,这样在需要时就可以很容易地从数据源中选择正确的项. 让我们通过点击三个椭圆来重命名这个触发器为“创建新任务”,然后在菜单中点击“重命名”:

选择你有“项目任务”列表的站点,然后选择“项目任务”列表:

如果你愿意,你可以点击蓝色的栏来折叠“创建新任务”触发动作.

点击“New step”按钮. 在“搜索连接器和操作”字段中, 输入“更新项”并选择“更新项”SharePoint动作. 现在,您有了一个新的“更新项目”操作. 让我们将其重命名为“Update Assignee 电子邮件 Address field”.

选择你的列表所在的站点,然后选择“项目任务”列表:

单击“Id”字段,然后单击Dynamic Content区域中的列表项“Id”. 这将它添加到字段. 正如您所看到的,您正在从我们创建的触发器操作中获取每个项目的ID. 这就是为什么重命名你的动作是重要的,这样它可以更容易地引用正确的字段:

*请注意,如果您在创建列表后重命名了下面的字段,它们的名称可能会有所不同. 所有的字段名都不是基于内部名称. 它们基于显示名称.*
现在我们要添加"到期日期". 点击“到期日期”字段,然后在动态内容区域选择“到期日期”:

添加TasksDeliverable字段:

现在选择assignneeemailaddress字段. 请确保在Dynamic Content区域中选择正确的电子邮件字段. 在本例中,它是“受让人邮件”。. 点击“保存”按钮:

The actions you have just completed extract the email address from the “Assignee” Person field so we can use it to filter off items in the “邮件来源” list we will use in the next steps.

点击“New step”按钮. 在“搜索连接器和操作”字段中, 输入“获取项目”并选择“获取项目”SharePoint动作. 不要选择“获取项目”. 现在,您有了一个新的“获取物品”操作. 让我们重命名为“Get items from 邮件来源”.

选择网站和“电子邮件来源”列表:

点击“显示高级选项”向下箭头:

在“Filter Query”字段类型中的“assignneeemailaddress eq”,然后一个空格后面跟着一个单引号(点击图片查看近景). 在右侧的“动态内容”区域, 选择“assignneeemailaddress”字段或任何你在项目任务列表中命名它的字段. D0不选择“委派邮件”字段. 直接在添加字段之后, 输入另一个单引号(见下面最后一张图片):

保存您的工作流程.

点击“新步骤”. 在“Search connectors and actions”字段中,键入condition并选择“condition”控件. 在添加它之后,我们将重命名条件“检查电子邮件源中是否存在受让人电子邮件地址”:

点击旁边的第一个“选择一个值”字段,然后点击表达式标签:

单击“表达式”字段并粘贴以下公式. 主体应该是我们之前添加的用下划线分隔每个单词的“Get Items”操作的名称. 确保完成后点击“OK”按钮:
=((身体长度(“Get_items_from_电子邮件_Source”)?(“价值”)),0)

确保条件被设置为" is equal to "和" true ":

点击“如果是”条件下的“添加一个动作”:

在“搜索连接器和操作”字段中, 输入“创建项目”并选择“创建项目”SharePoint动作. 现在,您有一个“创建项目”操作. 让我们将它重命名为“Add to 邮件来源”:

选择网站地址和列表名称“电子邮件来源”列表. 在右边的“动态内容”区域, make sure to select the “Assignee 电子邮件 Address” field(or whatever the name of your field is if you changed it) from the “Update Assignee 电子邮件 Address field” section:

点击“保存”按钮. 你可以点击“Test”按钮并执行触发操作,也可以直接到丢失的物品中添加物品. 如果一切顺利, 您应该会看到“委派人员电子邮件地址”字段应该被填充到“项目任务”列表中. 也, 您将在“邮件来源”列表中看到一个条目,其中包含了“委派邮件地址”. 继续下一个工作流. 保存流程后,点击左侧导航区中的“My flows”.

点击“新建”,选择“Scheduled-from blank”:

在“构建预定流”窗口中, 输入“Create 电子邮件”作为流程名称,并设置为每一周在周日重复一次,如图所示. 请注意,显示的“开始”日期是您希望流开始这个时间表的时间. 要选择您希望它运行的日期/秒,只需单击日期. 如果这一天是蓝色的,那意味着它将在那天运行. 当你设置好时间表后,点击“创建”. 如果你愿意, 您可以单击“跳过”按钮,暂时忽略时间表,这样您就可以确保在我们完成流程创建时,它能够正确地进行测试.

点击“保存”按钮. 点击“New step”并在“search connectors and actions”字段中输入“initialize variable”. 选择“初始化变量”变量动作. 让我们重命名变量“初始化变量fltUserTasks”. 如果您想要添加新步骤/动作以及重命名它们的详细步骤, 参见上述插图. 设置变量的名称为“fltUserTasks”, 变量的类型为“浮动”, 值将为0:

按照上面的步骤初始化以下变量:
行动: 初始化变量
重命名操作: “初始化变量str电子邮件Body”
名称: str电子邮件Body
类型: 字符串
值: 留下空白

行动: 初始化变量
重命名操作: “初始化变量fltHTMLIterationsCreated”
名称: fltHTMLIterationsCreated
类型: 浮动
值: 0

行动: 初始化变量
重命名操作: “初始化变量fltCounter”
名称: fltCounter
类型: 浮动
值: 0

行动: 初始化变量
重命名操作: “初始化strDueDate变量”
名称: strDueDate
类型: 字符串
值: ""

以下三个变量将使用Base64图像,因此值将是长字符串.
行动: 初始化变量
重命名操作: “初始化strLowRisk变量”
名称: strLowRisk
类型: 字符串
价值:

行动: 初始化变量
重命名操作: “初始化strMediumRisk变量”
名称: strMediumRisk
类型: 字符串
价值:

行动: 初始化变量
重命名操作: “初始化strHighRisk变量”
名称: strHighRisk
类型: 字符串
价值:

行动: 初始化变量
重命名操作: “初始化strStatusFlag变量”
名称: strStatusFlag
类型: 字符串
值: 留下空白

继续添加以下操作:

点击“新台阶”
行动: 获取项目- SharePoint
重命名操作: “获取邮件源字段以便清除”
网站地址: 列表所在站点的名称.
表名称: 邮件来源

点击“新台阶”
行动: 更新项目- SharePoint
重命名操作: “清除邮件来源列表”
网站地址: 列表所在站点的名称.
表名称: 邮件来源
Id: ID -获取邮件来源字段进行清除
活动任务: 0
每周总结运行日期: 点击字段,然后点击“Expression”标签. 输入“null”,然后点击“OK”按钮.
邮件正文: 点击该区域,然后点击“动态内容”标签. 点击“str电子邮件Body”变量.
HTML创建: 0

添加ID之后, 更新项目操作将被放置在一个循环中,以便该操作适用于邮件来源列表中的每个项目. 让我们将“Apply to each”循环重命名为“Clear each item in 邮件来源”:

点击“新台阶”
行动: 获取项目- SharePoint
重命名操作: “把项目任务”
网站地址: 列表所在站点的名称.
表名称: 项目任务
点击“显示高级选项”
在Filter Query字段中,粘贴以下内容:
状态ne“完成”和状态ne“取消”

点击“新台阶”
行动: 获取项目- SharePoint
重命名操作: “从邮件源获取任务”
网站地址: 列表所在站点的名称.
表名称: 邮件来源
点击“显示高级选项”
在Filter Query字段中,粘贴以下内容:
Assignee电子邮件Address情商的
直接在单引号之后, 点击“动态内容”选项卡,然后点击“获取项目任务”部分下的“委派人员电子邮件地址”(或您在列表中命名的任何字段). 在这之后,添加另一个单引号:

3/5/2020 * *, 看起来微软做了一些改变,这样SharePoint动作的图标和颜色就改变了:

一旦您添加了“受让人电子邮件地址”, “Get tasks from 邮件来源”操作被放置在一个循环中,以便该操作适用于邮件来源列表中的每个项目. 让我们重命名为“Apply to each Project Task”:


点击“添加一个动作”
行动: 设置变量-变量
重命名操作: 设置fltUserTasks变量
名称: fltUserTasks
值: Click in the “Enter variable value” field and in the “Dynamic content” tab click on “ActiveTasks”(or whatever you named the field in the list) within the “从邮件源获取任务” section.

只要你这么做, “Set fltUserTasks”操作将被放置在一个循环中,以便该操作适用于邮件来源列表中的每个项目. 让我们重命名这个“获取活跃用户并设置fltUserTasks变量”:

在循环之后点击“添加一个动作”:

行动: 更新项目- SharePoint
重命名操作: 更新活动任务
网站地址: 列表所在站点的名称.
表名称: 邮件来源
Id: 点击“要更新的项目的唯一标识符”字段,并在“动态内容”选项卡中点击“从邮件源获取任务”部分中的“ID”.

只要你这么做, “更新活动任务”操作将被放置在一个循环中,以便该操作适用于邮件来源列表中的每个项目. 让我们将其重命名为“Update the Active Tasks field for each item”.

点击“活动任务”(或任何你在电子邮件源列表中命名的字段)字段,并从字段中清除0. 点击右边的“Expression”标签,粘贴如下:
添加(变量(“fltUserTasks”),1)
点击“OK”按钮.

点击“新步骤”
行动: 获取项目- SharePoint
重命名操作: 从“项目任务”列表中获取任务信息以构建HTML
网站地址: 列表所在站点的名称.
表名称: 项目任务
点击“显示高级选项”. 在“Filter Query”字段粘贴如下:
状态ne“完成”和状态ne“取消”

点击“新步骤”
行动: 获取项目- SharePoint
重命名操作: 从电子邮件源获取项目以获取值
网站地址: 列表所在站点的名称.
表名称: 邮件来源
点击“显示高级选项”. 在“Filter Query”字段粘贴如下:
Assignee电子邮件Address情商的
直接在单引号之后, click on the “Dynamic content” tab and click on “Assignee 电子邮件 Address”(or whatever you named the field in the list) under the ” 从“项目任务”列表中获取任务信息以构建HTML ” section. 在这之后,添加另一个单引号:


只要你这么做, “Get items from 邮件来源 to Get values”动作将被放置在一个循环中,以便该动作应用于邮件来源列表中的每个项目. 让我们重命名“为邮件来源s中的每个条目创建HTML”:

点击“添加一个动作”
行动: 设置变量-变量
重命名操作: 设置变量str电子邮件Body的初始值
名称: str电子邮件Body
值: 点击“输入变量值”字段和右边的“动态内容”选项卡, 点击“电子邮件 Body”(或任何你在邮件来源列表中命名的字段)中的“Get items from 邮件来源s to Get values”部分.

只要你这么做, “设置str电子邮件Body变量的初始值”动作将被放置在一个循环中,以便该动作适用于邮件来源列表中的每一项. 让我们重命名这个“为每个项目编译HTML”:

点击“添加一个动作”
行动: 设置变量-变量
重命名操作: 设置fltHTMLIterationsCreated变量的初始值
名称: fltHTMLIterationsCreated
值: 点击“输入变量值”字段和右边的“动态内容”选项卡, 点击“HTML创建”(或任何你在电子邮件源列表中命名的字段)在“获取项目从电子邮件源获取值”部分.

点击“添加一个动作”
行动: 设置变量-变量
重命名操作: 设置变量strDueDate的初始值
名称: strDueDate
值: 点击“输入变量值”字段和右边的“动态内容”选项卡, 点击“到期日期”(或任何你在项目任务列表中命名的字段)在“从项目任务列表中获取任务信息以构建HTML”部分.

点击“添加一个动作”
行动: 的条件控制
重命名操作: 检查str电子邮件Body变量是否为空
点击第一个“选择值”字段, 在“Variables”部分的“Dynamic content”选项卡中选择“str电子邮件Body”变量.
在条件下拉菜单中,选择“等于”. 在最后一个" Choose a value "字段中,粘贴如下:
""

在“If yes”分支中,点击“Add an action”.

行动: 设置变量-变量
重命名操作: 设置str电子邮件Body变量
名称: str电子邮件Body
值: 在“输入变量值”字段中,粘贴以下代码:

Here are your active tasks

点击“添加一个动作”
行动: 的条件控制
重命名操作: 预产期是在5天内还是更短
点击第一个“选择值”字段, 在“Variables”部分的“Dynamic content”选项卡中选择“strDueDate”变量.
在条件下拉菜单中,选择“小于或等于”. 点击最后的“选择一个值”字段,然后点击“表达式”标签. 粘贴以下代码:
addDays (formatDateTime (utcNow (),“yyyy-MM-dd”),5)
确保你点击了“OK”按钮.

在“If yes”分支中,点击“Add an action”.
行动: 设置变量-变量
重命名操作: 设置变量strStatusFlag为strLowRisk
名称: strStatusFlag
值: 点击“输入变量值”,在“动态内容”选项卡中选择“Variables”部分中的“strLowRisk”变量.

点击“添加一个动作”
行动: 的条件控制
重命名操作: 预产期是在三天以内还是更短
点击第一个“选择值”字段, 在“Variables”部分的“Dynamic content”选项卡中选择“strDueDate”变量.
在条件下拉菜单中,选择“小于或等于”. 点击最后的“选择一个值”字段,然后点击“表达式”标签. 粘贴以下代码:
addDays (formatDateTime (utcNow (),“yyyy-MM-dd”),3)
确保你点击了“OK”按钮.

在“If yes”分支中,点击“Add an action”.
行动: 设置变量-变量
重命名操作: 设置strStatusFlag变量为strMediumRisk
名称: strStatusFlag
值: 点击“输入变量值”,在“动态内容”选项卡中选择“变量”部分中的“strMediumRisk”变量.

点击“添加一个动作”
行动: 的条件控制
重命名操作: 预产期比今天短吗
点击第一个“选择值”字段, 在“Variables”部分的“Dynamic content”选项卡中选择“strDueDate”变量.
在条件下拉菜单中,选择“小于”. 点击最后的“选择一个值”字段,然后点击“表达式”标签. 粘贴以下代码:
utcNow(“yyyy-MM-dd”)
确保你点击了“OK”按钮.

在“If yes”分支中,点击“Add an action”.
行动: 设置变量-变量
重命名操作: 设置变量strStatusFlag为strHighRisk
名称: strStatusFlag
值: 点击“输入变量值”,在“动态内容”选项卡中选择“变量”部分中的“strHighRisk”变量.

点击“添加一个动作”
行动: 添加到字符串变量-变量
重命名操作: 添加到字符串str电子邮件Body变量
名称: str电子邮件Body
值: 粘贴以下代码:

该值应该如下所示:

点击“添加一个动作”
行动: 增量变量-变量
重命名操作: 增量fltHTMLIterationsCreated变量
名称: fltHTMLIterationsCreated
值: 1

点击“添加一个动作”
行动: 设置变量-变量
重命名操作: 设置fltCounter变量
名称: fltCounter
值: 点击“输入变量值”字段,并在“Variables”下的“Dynamic content”区域中选择“fltHTMLIterationsCreated”变量.

点击“添加一个动作”
行动: 的条件控制
重命名操作: 检查fltCounter和Active Tasks是否相等
点击第一个“选择值”字段, 在“Variables”部分的“Dynamic content”选项卡中选择“fltCounter”变量.
在条件下拉菜单中,选择“等于”. 在“从电子邮件源获取项目以获取值”部分下的“动态内容”区域中选择“活动任务”.

在“If yes”分支中,点击“Add an action”.
行动: 添加到字符串变量-变量
重命名操作: 将关闭表标签附加到字符串变量
名称: str电子邮件Body
值: 粘贴以下代码:

TaskDue Date
">
将光标放在后面,然后选择“Task and/or Deliverable”(或者你在“邮件来源”列表中为该字段命名的任何东西). 添加“任务和/或交付物”后,粘贴以下代码:

请确保您将光标立即放在刚才粘贴的代码之后,然后单击“Expression”选项卡. 在表达式字段中,粘贴如下内容:
formatDateTime(变量(“strDueDate”)、“MM / dd / yyyy”)
将光标置于表达式之后,粘贴如下代码:

用光标紧随其后, 点击“Variables”部分下的“Dynamic content”区域中的“strStatusFlag”变量. 之后立即粘贴以下代码:

将光标立即放置在代码之后的“Dynamic content”选项卡中, 从“Variables”部分选择“strLowRisk”变量. 紧跟在变量“strLowRisk”之后,粘贴以下代码:

Indicates that the task is due in five days or less

将光标立即放置在代码之后的“Dynamic content”选项卡中, 从“Variables”部分选择“strMediumRisk”变量. 紧跟在变量" strMediumRisk "之后,粘贴以下代码:

Indicates that the task is due in three days or less

将光标立即放置在代码之后的“Dynamic content”选项卡中, 从“Variables”部分选择“strHighRisk”变量. 在变量strHighRisk之后,粘贴以下代码:

Indicates that the task is overdue

该值应该如下所示:

点击“添加一个动作”
行动: 更新项目- SharePoint
重命名操作: 添加所有的HTML到电子邮件源
网站地址: 列表所在站点的名称.
表名称: 邮件来源
Id: 点击“待更新项目的唯一标识符”字段和“动态内容”区域内, 在“Get items from 邮件来源 to Get values”部分选择“ID”.
活动任务: 通过删除0来清除该值
邮件正文: 从“动态内容”区域的“变量”部分中选择“str电子邮件Body”变量.
HTML创建: 从“Dynamic content”区域的“Variables”部分中选择“fltHTMLIterationsCreated”变量.

操作将如下所示:

点击“添加一个动作”
行动: 设置变量-变量
重命名操作: 重置strStatusFlag变量为空
名称: strStatusFlag
值: 单击“输入变量值”字段,然后单击“表达式”选项卡. 在表达式字段中,键入“null”,并确保单击“OK”按钮.

点击“New step”按钮
行动: 获取项目- SharePoint
重命名操作: 从电子邮件源中获取要发送电子邮件的项目
网站地址: 列表所在站点的名称.
表名称: 邮件来源

点击“New step”按钮
行动: 的条件控制
重命名操作: 检查Active Tasks和HTML Created是否相等
点击第一个“选择值”字段, 从“动态内容”选项卡中选择“活动任务”, 在“从电子邮件来源获取邮件”部分. 只要你这么做, “检查活动任务和HTML创建是相等的”动作将被放置在一个循环中,以便该动作适用于电子邮件源列表中的每个项目. 让我们重命名为“检查是否每个项目需要一封电子邮件发送”. 设置条件为“大于”. 在下一个“选择值”字段中,输入0.
点击“添加”按钮,选择“添加行”. 在新行中的第一个“选择值”字段中, 从“动态内容”选项卡中选择“活动任务”, 在“从电子邮件来源获取邮件”部分. 确保条件设置为"等于". 在下一个“选择一个值”字段中, 从“动态内容”选项卡中选择“HTML创建”, 在“从电子邮件来源获取邮件”部分.

条件应该如下所示:

在“If yes”分支中,点击“Add an action”.
行动: 转换时区-日期时间
基本时间: 点击“转换时间”.,然后点击“Expression”标签. 输入以下表达式:
utcNow ()
输入表达式后,请确保单击“OK”按钮.
源时区: 在下拉菜单中选择(UTC)协调世界时
目的地时区: 从下拉菜单中选择您的时区
格式字符串: 从下拉菜单中选择完整日期/时间模式(短时间)
**这些设置可能是不同的,根据您希望您的时间显示在您的电子邮件基于您的国家.**

点击“添加一个动作”
行动: 发送电子邮件(V2) - Office 365 Outlook
To: 在“从电子邮件源获取要发送电子邮件的项目”部分下的“动态内容”选项卡中选择“委派人员电子邮件地址”.
主题: 输入以下文本:
截止到
在" of "后面要有空格. 紧接着,点击“Expression”标签,输入以下表达式:
formatDateTime (utcNow (),“MM / dd / yyyy”)
身体: Click in the “Specify the body of the email” field and select “电子邮件 Body” within the “Dynamic content” tab 在“从电子邮件来源获取邮件”部分.

点击“添加一个动作”
行动: 更新项目- SharePoint
重命名操作: 更新邮件源列表并清除值
网站地址: 列表所在站点的名称.
表名称: 邮件来源
Id: 点击“待更新项目的唯一标识符”字段和“动态内容”区域内, 在“从电子邮件源中获取要发送电子邮件的项目”中选择“ID”.
活动任务: 0
每周总结运行日期: 点击“转换时区”部分下的“动态内容”区域中的“转换时间”.
邮件正文: 点击“表达式”选项卡,在表达式字段中,输入“null”. 确保点击“OK”按钮.
HTML创建: 0

第三步-测试
向“项目任务”列表中添加一个项目. 你会注意到的第一件事是,“受让人电子邮件地址”被填充:

如果你查看“邮件来源”列表,你也会看到类似的条目:

重复此过程,以便在“项目任务”列表中有两个项目. 也可以随意添加一些迟到的内容. 在“邮件源”列表中,你只会看到每个人一个条目.

测试第二个流, 点击流程编辑界面右上角的“Test”按钮:

选择“I 'll perform the trigger action”,然后点击“Save” & 测试”按钮:

点击“运行流程”:

点击“Done”按钮,您将看到流正在运行. 当它运行完成后,你应该在顶部看到一条消息,表明它是成功的:

如果您检查您的电子邮件和流程运行成功, 你的电子邮件看起来会像这样:

sharepoint快乐!