SharePoint列表规则问题:修正新增项通知的提交人显示
问题根源
SharePoint默认的「创建项」通知规则,是在项被创建的瞬间触发的,此时抓取的是执行创建操作的账户——也就是你的Power Automate流运行账户。哪怕之后用HTTP修改了Created By/Modified By字段,通知已经提前生成了,自然还是显示你的名字。
解决方案一:直接以提交人身份创建项(推荐)
不要先创建项再修改字段,直接通过REST API模拟提交人创建项,从根源解决问题:
- 第一步:在Power Automate流里,用「Get user profile (V2)」动作,传入Forms响应里的提交人邮箱,获取该用户的
ID(SharePoint内部用户ID)。 - 第二步:调用SharePoint的REST API创建项,请求配置如下:
- 方法:
POST - 地址:
https://你的站点地址/_api/web/lists/getbytitle('你的列表名称')/items - 请求头:
Content-Type: application/json;odata=verboseX-RequestDigest: {从站点获取的请求摘要值}
- 请求体(替换成你的字段和用户ID):
{ "__metadata": {"type": "SP.Data.你的列表名称ListItem"}, "标题": "表单提交的标题", // 其他自定义字段... "AuthorId": 提交人ID, "EditorId": 提交人ID }
- 方法:
- 注意:你的流运行账户需要有站点集管理员权限,或者具备“代表其他用户操作”的权限,否则无法模拟提交人创建项。
解决方案二:修改通知规则的触发逻辑
如果不想改流的创建逻辑,可以调整SharePoint的通知规则:
- 删除原有的「当项被创建时」的通知规则。
- 新建规则:选择「当项目被修改时」作为触发条件,然后添加筛选条件——
Created By字段发生了变化。 - 通知内容保持
[Created By]已添加新项,这样当你用HTTP修改完Created By字段后,通知才会触发,此时显示的就是实际提交人。
检查现有HTTP修改是否正确
如果你坚持用先创建再修改的方式,确保你的HTTP请求是修改了用户ID而非仅仅显示名称:
- 请求方法:
PATCH - 地址:
https://你的站点地址/_api/web/lists/getbytitle('你的列表名称')/items(项的ID) - 请求头:
Content-Type: application/json;odata=verboseX-RequestDigest: {请求摘要值}IF-MATCH: *(强制覆盖,避免版本冲突)
- 请求体:
{ "__metadata": {"type": "SP.Data.你的列表名称ListItem"}, "AuthorId": 提交人ID, "EditorId": 提交人ID }
修改完成后,刷新列表确认Created By字段确实显示为提交人,再测试通知。
内容的提问来源于stack exchange,提问作者Kristy
相关产品推荐
相关产品推荐

