SharePoint サイトの変更に関する毎日の概要アラートを作成する方法
-
06-09-2019 - |
質問
最近、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];
}
}
}
これにより、次の 2 つの問題が生じます。
- ユーザーはさまざまなアラートを作成しました。理想的:毎日の概要を記載したメールは 1 通だけです。
- サイト内の新しいリストやライブラリをチェックし、ユーザーにアラートを自動的に設定するには、ある種のモニターをセットアップする必要があります。
質問:サイト内のすべての変更について毎日の概要アラートを作成するにはどうすればよいですか?
解決
あなたが探しているソリューションは監査フレームワークを通じて利用できると思います。SP では監査は非常に堅牢ですが、残念ながら、出力に圧倒されがちです。
Audit は、SPSite、SPWeb、SPList、および SPItem プロパティで使用できるプロパティです。
このプロパティを使用して、ニーズに合わせて特定の監査フラグを調整します (.Audit.AuditFlags プロパティを使用) (詳細は「変更」を定義する方法によって異なりますが、考えられるほぼすべてのものが利用可能です)。
詳細については、 SPAudit オブジェクト MSDN で入手できます。
何を/どこで監査するかを定義したら、その情報をユーザーに返す必要があります。
既定では、SP はサイト コレクション レベル ([サイト コレクションの URL]/_layouts/Reporting.aspx?Category=Auditing) で使用できるいくつかの優れたレポートをセットアップします。これらはあなたのニーズを満たすかもしれません。
最初のソリューションでは、ユーザーへの電子メールによるアラートについて言及していました。ほとんどのユーザーが電子メールで情報を一元管理したいことを考えると (ただし、レポートへのリンクを置くには個人用サイトが最適な場所です!)、もう少し作業が必要になります。
SPAuditQuery オブジェクトと SPAuditEntryCollection オブジェクトを使用して、オブジェクト モデルを通じて必要な監査情報を取得できます。また、 MSDN にはいくつかの情報があります これらのオブジェクトの使用方法について説明します。
一日の終わりに実行されるカスタム SPJobDefinition を設定して、サイトの監査レポートをユーザーに電子メールで送信することをお勧めします。Andrew Connell が素晴らしい説明をしています カスタムジョブを設定する方法 彼のブログで。
要約する:
- 問題の SPWeb の監査を有効にする
- SPAuditQuery と SPAuditEntryCollection を使用して SPWeb ごとにレポートを作成する
- 毎晩実行される SPJobDefinition を作成して、各 SPWeb 所有者にレポートを電子メールで送信します。
他のヒント
サイト上の監査ポリシーを有効にする前に考慮すべき事は、追加のパフォーマンス・オーバーヘッドである。
私はここに可能な限り小さなフットプリントを維持する推薦!
あなたがからこの情報が欲しい、唯一の特定のコンテンツタイプまたは特定のリストは、これらのみCTのか、リスト上の情報のポリシーを有効にしてください場合、私が意味することによって!
また最小にログを保持します。例えば、あなたが唯一のこれらのイベントをログに記録し、削除または復元しない、ビューにのみ関心がある場合!
は、大規模なサイトでは、私が監査本当にゴミのパフォーマンスを見てきました!
また、ここではいくつかの注意点に注意してください。あなたが(ドキュメントライブラリではないのように)リストに監査を有効にすることができていても、(例えば、ビューイベントの)イベントの多くは、リスト項目のために特別に記録されていません!これは、(実際には私もMSDNの記事でアイテム・レベルの監査を言及テッドパティソンを見てきました)が、私はそのアイテム・レベルの監査があるため、パフォーマンスの問題のSP2007に実装されていないCSS、製品チームから直接それを持ってどこにも記述されていません。代わりに、あなただけのリストがタッチされたことを指定し、ログにリストイベントを取得します。
ドキュメントはかなりOK追跡されますが、私はどこでどのように監査ポリシーがあった場合、監査は、例えば(設定されたに応じて、(API文書ではないリストアイテムとみなされる)発行ページ上の監査ビューイベントの問題を見てきました継承されたCTので実装)ので、注意すべき何かのthats。
[編集:いくつかのこの昨日の周りのテストとそのさらに悪いことでした:の実際の出版ページでのみあなたはサイトレベルの監査ポリシーに設定されている場合、追跡!あなたは、リスト上のポリシーまたはコンテンツタイプ(またはポリシーとコンテンツタイプから継承しても、コンテンツタイプ)を設定した場合は、すべてのいいえ SPAuditItemType.Documentレベルのイベントを取得しません。サイト上でそれを設定して、あなたはあまりにも多くの監査を取得します!例えば。ビューは、X2ビューイベントをトリガし、アップデートと同じなので、あなたはあまりにも多くのログに記録されてしまいます。それはdefinetelyポリシーがリストに入れているとき何が監査されていないバグのように見えるCTの...]
ここでの主なメッセージは次のとおりです。 それはあなたのサイトのパフォーマンスに影響しますので、あなたは、ログインどのように注意 何をログに記録することを期待することは本当にログインしていることをTEST!
HTH アンダース・ラスク
さて、それは、アイテムレベルの監査がないとは限りません。アイテム・レベルの監査が実装されていますが、特定の項目のためにそれをONにする必要があります。リスト項目が存在する場合には、そのインスタンスを取得し、あなたがリストにこれを行うと同じように監査を有効にすることができます。問題は、リストアイテムが作成されたときにそれをオンにする方法ということです。たぶん、ワークフローは助けることができる?