使用Power Automate自动统计Microsoft Planner Bucket数量
解决Power Automate统计Planner Bucket数量时length()函数执行失败的问题
问题根源
从你贴出的List Buckets返回JSON能清楚看到,所有Bucket的实际数据都嵌套在body的value数组里。你现在用的length(body('List_Buckets'))是在试图计算整个响应对象的长度——但这是个JSON对象,不是数组,自然会触发类型错误导致步骤失败。
快速修复Compose代码
把你的Compose步骤里的代码替换成下面这个,就能正确统计Bucket总数了:
length(body('List_Buckets')?['value'])
body('List_Buckets')?['value']:精准定位到存储Bucket列表的数组,?是可选链操作符,能避免万一value字段不存在时抛出额外错误。length():现在作用在数组上,就能准确返回Bucket的数量了。
实现你的核心需求:按任务状态统计Bucket数量
你提到要统计处于未开始、进行中、逾期、已完成状态的Bucket数量,这里要注意:Planner的Bucket本身没有状态属性,状态是属于Bucket内的任务的。所以要实现这个需求,你需要调整流的逻辑:
- 先用
List Buckets获取所有Bucket列表 - 添加
Apply to each循环,遍历每个Bucket - 在循环内用
List tasks in bucket获取当前Bucket下的所有任务 - 用
Filter array分别筛选对应状态的任务(状态标识符参考:未开始%23notStarted、进行中%23inProgress、逾期%23late、已完成%23completed) - 添加Condition判断:如果筛选后的任务数组长度大于0,说明这个Bucket包含对应状态的任务,就给对应的计数变量加1
- 循环结束后,各变量的值就是对应状态的Bucket数量
另外,如果你要把原有的“剩余任务”替换为“剩余Bucket”,只需要把原来统计任务的逻辑替换成上述统计Bucket的逻辑即可。
内容的提问来源于stack exchange,提问作者Philip Chow
相关产品推荐
相关产品推荐

