You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Automate中统计Graph API返回结果指定skuId的出现次数

统计Graph API返回结果中特定skuId的出现次数

问题背景

通过Graph API获取的用户许可数据结构如下(简化示例):

{
  "value": [
    {
      "userPrincipalName": "user@domain.com",
      "assignedLicenses": [
        {
          "disabledPlans": [],
          "skuId": "4b585984-651b-448a-9e53-3b10f069cf7f"
        },
        {
          "disabledPlans": [],
          "skuId": "26d45bd9-adf1-46cd-a9e1-51e9a5524128"
        }
      ]
    }
    // 更多用户对象
  ]
}

需要统计指定skuId(如4b585984-651b-448a-9e53-3b10f069cf7f)的出现次数,尝试用sub(length(split('@outputs','4b585984-651b-448a-9e53-3b10f069cf7f')),1)未成功,以下是正确实现方法。

正确实现方案

方案1:使用XPath精准统计(Power Automate Premium可用)

将JSON转换为XML后,用XPath匹配目标skuId的节点,直接获取数量:

length(xpath(xml(json(concat('{"root":', outputs('Get_users')?['body'], '}'))), '//skuId[text()="4b585984-651b-448a-9e53-3b10f069cf7f"]'))
  • 原理:把Graph API返回的JSON包裹在root节点下转成XML,再用XPath筛选所有值为目标skuId的skuId元素,最后取元素长度即为出现次数。
  • 优势:无需循环,效率高,无字符串误判风险。

方案2:循环累加计数(无Premium限制)

如果没有Power Automate Premium权限,可通过双层循环实现:

  • 初始化一个整数变量licenseCount,默认值设为0。
  • 添加「Apply to each」动作,遍历Graph API返回的value数组(所有用户)。
  • 在内层添加第二个「Apply to each」,遍历当前用户的assignedLicenses数组。
  • 内层循环中添加「Condition」,判断当前skuId是否等于目标值。
  • 若条件成立,执行「Increment variable」动作,将licenseCount加1。
  • 优势:无需高级功能,逻辑直观,适合简单场景。

方案3:修正字符串分割法(不推荐)

之前的公式失败原因是引用格式错误,修正后可临时使用,但存在误判风险(如其他字段包含相同字符串会被统计):

sub(length(split(string(outputs('Get_users')?['body']), '4b585984-651b-448a-9e53-3b10f069cf7f')), 1)
  • 注意:必须用string(outputs('Get_users')?['body'])将JSON转为字符串,且确保outputs('Get_users')是正确的动作名称。

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:43:17