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

如何配置SharePoint项创建者告警:通过jQuery或事件处理器实现增改通知

实现SharePoint项添加/编辑时向创建者发送通知的方案

嘿,我来帮你搞定这个SharePoint的告警需求!根据你的要求,我会提供基于jQuery+SharePoint JSOM的客户端实现方案,同时也会提一下更省心的无代码备选方案,你可以根据自己的环境和需求选择。

核心思路

我们可以通过监听SharePoint列表的新建/编辑表单提交事件,在表单完成保存前后获取项的创建者信息,然后调用SharePoint内置的邮件发送接口给创建者推送通知。这个方案不需要依赖外部服务,完全基于SharePoint自身能力实现。

方法一:经典版SharePoint表单(jQuery+JSOM实现)

这个方法适用于经典版SharePoint(2013/2016/2019或Online经典体验),你可以把脚本添加到列表的NewForm.aspx和EditForm.aspx页面中(通过内容编辑器Web部件或脚本编辑器Web部件)。

完整代码示例

// 确保SharePoint核心脚本加载完成后再执行
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() {
    $(document).ready(function() {
        // 匹配保存按钮(中文环境用'保存',英文环境替换为'Save')
        const submitBtn = $("input[value='保存']");
        
        submitBtn.on("click", function(e) {
            e.preventDefault(); // 先阻止默认提交,处理完通知再保存数据
            
            const ctx = SP.ClientContext.get_current();
            const web = ctx.get_web();
            const targetList = web.get_lists().getById(_spPageContextInfo.pageListId);
            const isNewForm = window.location.href.includes("NewForm.aspx");

            // 处理新建项场景:创建者就是当前操作的用户
            if (isNewForm) {
                const currentUser = web.get_currentUser();
                ctx.load(currentUser);
                
                ctx.executeQueryAsync(function() {
                    sendNotification(
                        currentUser.get_email(),
                        "新项已创建",
                        `你在${targetList.get_title()}列表中创建的项已成功保存!`
                    );
                    $("#aspnetForm").submit(); // 通知处理完成后提交表单
                }, function(sender, args) {
                    alert(`获取用户信息失败: ${args.get_message()}`);
                    $("#aspnetForm").submit(); // 即使失败也提交,避免数据丢失
                });
            } 
            // 处理编辑项场景:获取原有项的创建者
            else {
                const itemId = _spPageContextInfo.pageItemId;
                const targetItem = targetList.getItemById(itemId);
                ctx.load(targetItem, "Author"); // 加载项的创建者字段
                
                ctx.executeQueryAsync(function() {
                    const creator = targetItem.get_item("Author");
                    ctx.load(creator);
                    
                    ctx.executeQueryAsync(function() {
                        sendNotification(
                            creator.get_email(),
                            "项已被编辑",
                            `你在${targetList.get_title()}列表中创建的项已被修改!`
                        );
                        $("#aspnetForm").submit();
                    }, function(sender, args) {
                        alert(`获取创建者信息失败: ${args.get_message()}`);
                        $("#aspnetForm").submit();
                    });
                }, function(sender, args) {
                    alert(`获取项信息失败: ${args.get_message()}`);
                    $("#aspnetForm").submit();
                });
            }
        });

        // 封装邮件发送逻辑
        function sendNotification(toEmail, subject, body) {
            const ctx = SP.ClientContext.get_current();
            const emailProps = new SP.Utilities.EmailProperties();
            
            emailProps.set_to([toEmail]);
            emailProps.set_subject(subject);
            emailProps.set_body(body);
            
            SP.Utilities.Utility.sendEmail(ctx, emailProps);
            
            ctx.executeQueryAsync(function() {
                console.log("通知邮件已成功发送");
            }, function(sender, args) {
                alert(`发送邮件失败: ${args.get_message()}`);
            });
        }
    });
});

关键注意事项

  • 按钮选择器适配:如果你的SharePoint是英文环境,要把input[value='保存']改成input[value='Save'];也可以用浏览器F12工具查看按钮的ID,直接用ID选择器会更稳定。
  • 权限与配置:当前用户需要有发送邮件的权限,同时SharePoint的邮件服务器配置必须正常(一般由管理员完成)。
  • 脚本加载时机:用SP.SOD.executeFunc确保SP.js加载完成再执行代码,避免出现JSOM对象未定义的错误。

方法二:无代码替代方案(Power Automate)

如果是现代版SharePoint Online,我强烈推荐用**Power Automate(微软流)**实现,完全不需要写代码:

  1. 新建一个自动化流,触发条件选择"当项被创建或修改时"(选择目标列表)
  2. 添加"发送电子邮件(V2)"动作,收件人选择项的"创建者"字段
  3. 自定义邮件主题和内容,保存流即可

这个方案更稳定、维护成本更低,适合大多数现代SharePoint场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:39:48