Power Automate中用表达式提取JSON数组邮箱作为Outlook参会者
在Power Automate中用表达式提取数组邮箱并拼接成分隔字符串
问题背景
我正在编写Power Automate流,通过响应Webhook发起HTTP GET请求获取数据,用来在Outlook中创建日历事件。目前已经能成功提取事件名称、编号、ID、开始/结束时间等信息创建事件,但卡在了从Resources数组里提取多个邮箱作为必填参会者的环节——我需要得到分号分隔的邮箱列表(比如bill_bean@email.co; kevin_smith@email.co),想知道能不能用表达式直接实现,不用添加循环操作。
示例JSON载荷:
{ "Contact": { "Name": "Nikola Tessla", "Title": null, "Email": null, "Phone": null, "Mobile": "123-456-7890" }, "SiteAddress": { "Street1": "12345 Laser Beam Lane", "Street2": null, "City": "Electrico", "State": "Poland", "PostalCode": "01134", "Country": null, "Phone": null, "Fax": null }, "Resources": [ { "Name": "Billy Bean", "Email": "bill_bean@email.co", "EstimatedHours": 1, "ActualHours": null, "Cost": 50 }, { "Name": "Kevin Smith", "Email": "kevin_smith@email.co", "EstimatedHours": 1, "ActualHours": null, "Cost": 100 } ], "Items": [], "Id": "b65f78b0-3352-484f-aedb-ee3b0b77463a", "Client": "Nikola Tessla", "ProjectId": "71b865f5-62dc-4fb1-a9b6-ed4b26ccee2c", "Project": "12345 Electrco Lane", "ProjectNumber": "17-0023", "Name": "Sample Task for API Testing", "Number": "20170876", "Description": null, "Start": "2025-01-27T08:00:00", "End": "2025-01-27T16:00:00", "Progress": "NEEDS TO BE SCHEDULED", "CreatedOn": "2025-01-25T22:27:27.227", "UpdatedOn": "2025-01-26T05:06:33.81", "CreatedBy": "Billy Bean", "UpdatedBy": "Billy Bean", "PublishedBy": "Billy Bean" }
解决方案
完全可以用Power Automate的内置表达式实现,不需要额外添加循环动作,直接用select+join组合即可:
完整表达式
把下面的表达式直接填入Outlook「创建日历事件」动作的「必填参会者」字段中(注意替换body('Parse_JSON')为你实际的解析JSON动作输出名称):
join(select(body('Parse_JSON')?['Resources'], item()?['Email']), '; ')
表达式拆解
select函数:从Resources数组中提取每个元素的Email值,得到一个纯邮箱字符串的数组,比如['bill_bean@email.co', 'kevin_smith@email.co']join函数:把这个邮箱数组用分号加空格拼接成单个字符串,最终输出bill_bean@email.co; kevin_smith@email.co
注意事项
- 如果
Resources数组为空,表达式会返回空字符串,不会影响日历事件创建; - 确保你的
Parse_JSON动作已经正确解析了HTTP响应的JSON结构,否则需要根据实际字段路径调整表达式中的body('Parse_JSON')?['Resources']部分。
内容的提问来源于stack exchange,提问作者fryeguy
相关产品推荐
相关产品推荐

