如何在Power Automate中正确设置orderHint保留Microsoft Planner清单项顺序
解决Power Automate中Planner清单项顺序保留问题
核心原理
Planner的orderHint字段仅尊重符合字典序排序规则的唯一字符串,默认生成的是18位数字格式字符串。只要自定义的orderHint满足「长度一致、按目标顺序递增、无重复」的要求,Planner就不会覆盖它。
具体实现步骤
1. 先对源清单项按标题数字排序
在Power Automate中,先获取源任务的所有清单项,使用sort()函数结合数字提取表达式,确保遍历顺序是目标顺序:
sort( outputs('获取源任务的清单项')?['body/value'], int(first(split(item()?['title'], ' - '))) )
这里用int()把提取的数字字符串转为整数,保证排序是数字顺序而非字典序(避免"10"排在"2"前面的问题)。
2. 生成合规的orderHint值
- 初始化一个整数变量
orderIndex,初始值设为1。 - 在遍历排序后的清单项时,用以下表达式生成18位的orderHint(和Planner默认格式一致):
formatNumber(variables('orderIndex'), '000000000000000000')
- 创建清单项时,将这个表达式的结果填入「Order hint」输入框。
- 每次创建完成后,执行「递增变量」动作,把
orderIndex加1。
3. 关键注意事项
- 必须先排序再创建,不要先批量创建再更新orderHint,后者容易被Planner自动调整排序逻辑。
orderHint必须唯一,且严格按目标顺序递增,不能出现跳号或重复值。- 保持18位长度是最优选择,和Planner内部生成的格式对齐,避免系统自动修正。
为什么之前的方案失效?
- 直接用提取的短数字(如"02")作为orderHint,长度不符合Planner默认格式,会被系统自动补全或替换。
- 先创建后更新的方式,Planner会判定为无序状态下的调整,优先使用自身排序逻辑覆盖自定义值。
- 重复创建动作不会改变Planner的排序规则,反而可能导致重复项或排序混乱。
内容的提问来源于stack exchange,提问作者Dario.Casciato
相关产品推荐
相关产品推荐

