如何为SharePoint网站中的任何更改创建每日摘要警报

Kit*_*nke 5 c# sharepoint alert sharepoint-2007 alerts

我最近要求某人收到SharePoint网站内任何更改的每日摘要提醒; 每个站点都有一个负责其网站内容的所有者.

我们目前的工作方式是自动为站点内的每个列表/库设置警报.

// Get the Lists on this Site
SPListCollection siteLists = currentSite.Lists;
foreach (SPList list in siteLists)
{
    if (!list.ToString().Equals("Master Page Gallery"))
    {
        if (list.ReadSecurity == 1) // user has read access to all items
        {
            // Create an Alert for this List
            Guid alertID = currentUser.Alerts.Add(list, SPEventType.All, SPAlertFrequency.Daily);

            // Set any additional properties
            SPAlert newAlert = currentUser.Alerts[alertID];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生两个问题:

  1. 用户创建了许多不同的警报.理想:只有一封电子邮件,包含每日摘要.
  2. 必须设置某种监视器以检查站点中的新列表或库,并自动为用户设置警报.

问:如何为站点中的所有更改创建每日摘要警报?

Mar*_*ark 6

我相信您正在寻找的解决方案可通过审计框架获得.审计在SP中非常强大,不幸的是它很容易被输出所淹没.

Audit是SPSite,SPWeb,SPList和SPItem属性上可用的属性.

使用此属性调整特定审计标志(使用.Audit.AuditFlags属性)以满足您的需求(具体取决于您如何定义"更改",但几乎任何您能想到的内容都可用).

有关SPAudit对象的详细信息,访问MSDN.

一旦定义了要审核的内容/位置,就必须将这些信息反馈给用户.

默认情况下,SP会在网站集级别设置一些不错的报告([网站集的网址]/_ layouts/Reporting.aspx?类别=审核).这些可能会满足您的需求.

您的初始解决方案通过电子邮件为用户提供了警报 鉴于大多数用户希望将他们的信息集中在电子邮件中(尽管他们的MySite是放置报告链接的好地方!),您还需要做更多的工作.

您可以使用SPAuditQuery和SPAuditEntryCollection对象通过对象模型提取所需的审计信息.同样,MSDN有一些关于如何使用这些对象的信息.

我建议设置一个在一天结束时运行的自定义SPJobDefinition,以便向用户发送其站点的审核报告.Andrew Connell对如何在他的博客上设置自定义作业进行了很好的解释.

总结一下:

  • 启用对所讨论的SPWeb的审核
  • 为每个SPWeb使用SPAuditQuery和SPAuditEntryCollection创建报告
  • 创建一个每晚运行的SPJobDefinition,通过电子邮件将报告发送给每个SPWeb所有者