Power Automate中List Rows步骤筛选当前用户拥有行的表达式问题
获取当前用户拥有的所有Dataverse Account记录的解决方案
你的问题出在依赖triggerOutputs()?['body/_ownerid_value']获取当前用户ID——这个值仅在触发器绑定到某条Account记录(比如创建/修改Account)时才存在,若为手动触发或其他类型触发器,自然返回null。以下是两种可靠的实现方案:
方案一:使用Dataverse原生函数(推荐)
无需额外步骤,直接在**List Rows(Account表)**的Filter rows输入框中写入表达式:
ownerid eq currentuser()
currentuser()是Dataverse内置函数,会自动匹配当前运行流的用户对应的系统用户(systemuser)记录,直接筛选出该用户作为所有者的所有Account记录,逻辑更简洁可靠。
方案二:通过Office 365 Users连接器获取用户ID
如果需要更灵活的用户ID获取方式,可按以下步骤操作:
- 在List Rows步骤前添加**Get my profile (V2)**步骤(Office 365 Users连接器),该步骤会返回当前流运行用户的Azure AD信息。
- 若你的Dataverse系统用户与Azure AD同步,可直接在List Rows的
Filter rows中写入:
若系统用户ID与Azure AD ID不匹配,需先添加**List Rows(systemuser表)**步骤,过滤条件设为_ownerid_value eq '@{outputs('Get_my_profile_(V2)')?['body/id']}'azureactivedirectoryobjectid eq '@{outputs('Get_my_profile_(V2)')?['body/id']}',再用返回的systemuser主键ID作为Account表的_ownerid_value匹配值。
验证注意事项
- 确保流运行账号拥有Account表的读取权限,且能访问自身拥有的Account记录。
- 若使用方案二,需确认用户ID的匹配逻辑与Dataverse环境的用户同步规则一致。
内容的提问来源于stack exchange,提问作者Edward Cho
相关产品推荐
相关产品推荐

