Ir para o conteúdo principal

Salvador Moraes

Ir para Pesquisa
Home
  

Salvador Moraes > Postagens > Lista do SharePoint Relatórios e Informações
Lista do SharePoint Relatórios e Informações

Pessoal,

Pelas minhas idas e vindas achei várias coisas interessantes sobre listas do SharePoint então resolvi mostrar algumas coisas.

Bom vamos reunir algumas informações básicas sobre a lista.

Objeto SPList tem algumas propriedades importantes que podemos usar para obter informações básicas sobre a nossa lista, como: Quem criou a lista e quando? Quantos itens da lista contém? Etc. Etc.

Propriedade

Valor

Descrição

Autor

sharepoint \ user1

O usuário que criou a lista

Criado

10/2/2009 9:22:55

A data e hora de criação para a lista

Última modificação

12/30/2009 3:38:56

A data que a lista foi modificada pela última vez

Template

DocumentLibrary

O tipo de definição da lista em que a lista é baseada

Versão

9

O número da versão da lista

Total de itens

16

O número total de itens na lista

Para gerar o relatório e listar as informações básicas podemos usar o objeto SPList exibido neste exemplo de código:

SPList ListaSP = SPContext.Current.Web.Lists[NomeLista];

this.Controls.Add(new LiteralControl("<h3>Informações sobre a lista</h3>"));
this.Controls.Add(new LiteralControl("<table><tr><td><b>Propriedade</b></td><td><b>Value</b></td><td><b>Descrição</b></td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Autor</td><td>" + ListaSP.Author.LoginName + "</td><td>O usuario que criou a lista. </td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Criado</td><td>" + ListaSP.Created.ToString() + "</td><td> Data e hora da criação da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Ultima modificação</td><td>" + ListaSP.LastItemModifiedDate + "</td><td>Ultima modificação da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Template</td><td>" + ListaSP.BaseTemplate.ToString() + "</td><td>Template da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Versão</td><td>" + ListaSP.Version.ToString() + "</td><td>Versão da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Total de items</td><td>" + ListaSP.ItemCount.ToString() + "</td><td>Numero total de itens da lista</td></tr>"));
this.Controls.Add(new LiteralControl("</table>"));

Lista do SharePoint Alertas de Informação e Estatística


Uma maneira de saber se a lista é muito popular em seu site é verificar o total de avisos na lista feita pelos próprios usuários. Podemos usar a propriedade SPAlertCollection de SPUser para verificar se o usuário escreveu avisos desta lista.

Propriedade

Valor

Descrição

Total de Alertas

3

O número de usuários realmente se inscrever na lista

Todas as modificações

2

Todos os eventos relativos à lista ou item de lista

Todas as inclusões

1

Incluir à lista ou item de lista

Modificar Alterar Tipo

0

Todas as alterações feitas em uma lista ou item de lista

Excluir Alterar Tipo

0

Exclusão de uma lista ou item de lista

Alterar tipo de discussão

0

Alterações nas discussões na Web

Para gerar a lista de alertas relatório temos de percorrer em cada SPUser SPWeb.AllUsers como apresentado neste exemplo de código:
this.Controls.Add(new LiteralControl("<h3> Lista do SharePoint Alertas de Informação e Estatisticas. </h3>"));
int totalUsers = 0;
int changeTypeAll = 0;
int changeTypeAdd = 0;
int changeTypeDelete = 0;
int changeTypeDiscussion = 0;
int changeTypeModify = 0;
foreach (SPUser user in SPContext.Current.Web.AllUsers)
{
foreach (SPAlert alert in user.Alerts)
{
if (ListaSP.ID == alert.List.ID)
{
totalUsers++;
switch (alert.EventType)
{
case SPEventType.All:
changeTypeAll++;
break;
case SPEventType.Add:
changeTypeAdd++;
break;
case SPEventType.Delete:
changeTypeDelete++;
break;
case SPEventType.Discussion:
changeTypeDiscussion++;
break;
case SPEventType.Modify:
changeTypeModify++;
break;
default:
break;
}
}
}
}
this.Controls.Add(new LiteralControl("<table><tr><td><b>Propriedade</b></td><td><b>Value</b></td><td><b>Descrição</b></td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Total Alertas</td><td>" + totalUsers.ToString() + "</td><td>Numero de usuarios inscritos na lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Todas as alterações</td><td>" + changeTypeAll.ToString() + "</td><td>Todas as alterações referentes a listas ou itens </td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Modificação do tipo</td><td>" + changeTypeAdd.ToString() + "</td><td>Alteração do Tipo</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Alteração da lista ou item da lista</td><td>" + changeTypeModify.ToString() + "</td><td>Todas as alterações feitas em uma lista ou item da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Exclusão ou alterar o tipo</td><td>" + changeTypeDelete.ToString() + "</td><td>Exclusão da lista ou item da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Alteração na discussão da Web</td><td>" + changeTypeDiscussion.ToString() + "</td><td> Alteração na discussão da Web </td></tr>"));
this.Controls.Add(new LiteralControl("</table>"));

Lista do SharePoint Relatório de Uso


Para manter o controle de quem está acessando nossa lista, os itens que foram acessadas pelos usuários e quando. Podemos usar o método SPWeb.GetUsageData para encontrar essa informação.

Arquivo

Total Hits

Dia Mais Recentes

documento1.doc

15

29-12-2009

documento2.doc

7

29-12-2009

Para gerar o relatório de utilização da lista precisamos filtrar a DataTable para que  exiba o único item da nossa lista como mostrado neste exemplo de código:

this.Controls.Add(new LiteralControl("<h3>Lista do SharePoint – Relatório de Uso</h3>"));
this.Controls.Add(new LiteralControl("<table><tr><td><b>Arquivo</b></td><td><b>Total Hits</b></td><td><b>Dia Mais Recentes</b></td></tr>"));
DataTable dt = SPContext.Current.Web.GetUsageData(SPUsageReportType.url, SPUsagePeriodType.lastMonth);
foreach (DataRow drow in dt.Rows)
{
if (drow["Arquivos"].ToString().ToLower() == list.RootFolder.Url.ToLower())
{
this.Controls.Add(new LiteralControl("<tr><td valign=\"top\">" + drow["Page"].ToString() + "</td><td valign=\"top\">" + drow["Total Hits"].ToString() + "</td><td valign=\"top\">" + drow["Dia Mais Recentes "].ToString() + "</td></tr>"));
}
}
this.Controls.Add(new LiteralControl("</table>"));

 

Lista do SharePoint Relatório de Alterações


O relatório de alteração mostrar todas as alterações feitas na lista nos últimos 30 dias

Item

Alterar Tipo

Data

documento1.doc

Adicionar

10/31/2009 3:41:21

documento2.doc

Atualizar

10/31/2009 3:39:34

documento4.doc

Adicionar

10/31/2009 3:45:34

documento4.doc

Atualizar

10/31/2009 3:48:02

documento4.doc

Atualizar

10/31/2009 4:34:39

documento5.doc

Adicionar

10/31/2009 3:16:12

documento6.doc

Adicionar

10/31/2009 3:19:58

documento7.doc

Adicionar

10/31/2009 4:33:12

documento8.doc

Adicionar

10/31/2009 4:35:33

documento8.doc

Atualizar

10/31/2009 4:38:56

Para gerar o relatório de alteração da lista, podemos usar os objetos SPChangeToken, passe SPChangeCollection.CollectionScope.List como o construtor como mostrado neste exemplo de código:

this.Controls.Add(new LiteralControl("<h3>Lista do SharePoint Relatório de Alterações</h3>"));
this.Controls.Add(new LiteralControl("<table><tr><td><b>Item</b></td><td><b>Alteração do Tipo</b></td><td><b>data</b></td></tr>"));
SPChangeToken changeToken =
new SPChangeToken(SPChangeCollection.CollectionScope.List, ListaSP.ID, DateTime.Today.AddDays(-30));
SPChangeCollection changeCollection =
ListaSP.GetChanges(changeToken);
foreach (SPChange change in changeCollection)
{
if (change.GetType().ToString() == "Microsoft.SharePoint.SPChangeItem")
{
SPChangeItem changeItem = (SPChangeItem)
change;
try
{
SPListItem
item = ListaSP.GetItemByUniqueId(changeItem.UniqueId);
if (item != null)
{
this.Controls.Add(new LiteralControl("<tr><td>" + item.Name + "</td><td>" + changeItem.ChangeType.ToString() + "</td><td>" + changeItem.Time.ToString() + "</td></tr>"));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
this.Controls.Add(new LiteralControl("</table>"));

Relatório de Usuários da lista do SharePoint


Aqui vamos reunir os usuários que realmente usam esta lista. Nós vamos ver quantos arquivos são acessados pelos usuários da lista e como muitos arquivos e versões a lista tem.

Propriedade

Valor

Descrição

Total de usuários

12

O número de usuários realmente na lista

Total de arquivos baixados

3

O total de arquivos que tem check-out por usuários da lista

Total de versões de arquivos

25

O número total de versões de todos os arquivos criados por lista de usuários

Top utilizadores

SharePoint \ user3 (45) Atividades
sharepoint \ user1 (22) Atividades
SharePoint \ user5 (19) Atividades
sharepoint \ user2 (13) Atividades
SharePoint \ user4 (11) Atividades

O top 5 usuários na lista


Lista do SharePoint para Relatório


O relatório de armazenamento verificar a quantidade de espaço em disco ocupado pelos arquivos e suas versões em sua lista.

Propriedade

Valor

Descrição

Total do tamanho dos arquivos

12,58 MB

Esta é a quantidade de espaço em disco ocupado pelos arquivos na sua lista

Total do tamanho versões

8,84 MB

Esta é a quantidade de espaço em disco ocupado pelas versões em sua lista

Total do Tamanho da pasta

21,42 MB

Esta é a quantidade total de espaço em disco ocupado pela lista

Para os dois últimos relatórios, percorremos todos os itens na lista, como mostrado neste exemplo de código (parte código de comprimento).
Eu também uso duas classes de ajuda, a classe ListUser e GenericComparer. (Pegue AQUI)

List<ListUser> listUsers = new List<ListUser>();
List<ListUser> listFindUsers = new List<ListUser>();
int checkedFiles = 0;
int totalVersions = 0;
long filesSize = 0;
long versionsSize = 0;
foreach (SPListItem item in ListaSP.Items)
{
listFindUsers.
Clear();
if (item["Autor"] != null)
{
string userValue = item["Autor"].ToString();
int index = userValue.IndexOf(';');
int id = Int32.Parse(userValue.Substring(0, index));
SPUser
author = SPContext.Current.Web.SiteUsers.GetByID(id);
listFindUsers = listUsers.
FindAll(delegate(ListUser listUser)
{
if (listUser.User.LoginName != author.LoginName)
{
return false; }
listUser.
Activities += 1;
return true;
});
if (listFindUsers.Count == 0)
{
listUsers.
Add(new ListUser(author, 1));
}
}
listFindUsers.
Clear();
if (item["Editor"] != null)
{
string userValue = item["Editor"].ToString();
int index = userValue.IndexOf(';');
int id = Int32.Parse(userValue.Substring(0, index));
SPUser editor = SPContext.
Current.Web.SiteUsers.GetByID(id);
listFindUsers = listUsers.
FindAll(delegate(ListUser listUser)
{
if (listUser.User.LoginName != editor.LoginName)
{
return false; }
listUser.
Activities += 1;
return true;
});
if (listFindUsers.Count == 0)
{
listUsers.
Add(new ListUser(editor, 1));
}
}
if (item.File != null)
{
filesSize +=
item.File.Length;
listFindUsers.
Clear();
if (item.File.Author != null)
{
listFindUsers = listUsers.
FindAll(delegate(ListUser listUser)
{
if (listUser.User.LoginName != item.File.Author.LoginName)
{
return false;
}
listUser.
Activities += 1;
return true;
});
if (listFindUsers.Count == 0)
{
listUsers.
Add(new ListUser(item.File.Author, 1));
}
}
listFindUsers.
Clear();
if (item.File.ModifiedBy != null)
{
listFindUsers = listUsers.
FindAll(delegate(ListUser listUser)
{
if (listUser.User.LoginName != item.File.ModifiedBy.LoginName)
{
return false; }
listUser.
Activities += 1;
return true;
});
if (listFindUsers.Count == 0)
{
listUsers.
Add(new ListUser(item.File.ModifiedBy, 1));
}
}
listFindUsers.
Clear();
if (item.File.CheckedOutBy != null)
{
checkedFiles = +1;
listFindUsers = listUsers.
FindAll(delegate(ListUser listUser)
{
if (listUser.User.LoginName != item.File.CheckedOutBy.LoginName)
{
return false; }
listUser.
Activities += 1;
return true;
});
if (listFindUsers.Count == 0)
{
listUsers.
Add(new ListUser(item.File.CheckedOutBy, 1));
}
}
if (ListaSP.EnableVersioning)
{
bool currentVersion = true;
foreach (SPListItemVersion version in item.Versions)
{
if (!currentVersion)
{
totalVersions += 1;
listFindUsers = listUsers.
FindAll(delegate(ListUser listUser)
{
if (listUser.User.LoginName != version.CreatedBy.User.LoginName)
{
return false; }
listUser.
Activities += 1;
return true;
});
if (listFindUsers.Count == 0)
{
listUsers.
Add(new ListUser(version.CreatedBy.User, 1));
}
if (version.ListItem.File != null)
{
versionsSize +=
version.ListItem.File.Length;
}
}
currentVersion = false;
}
}
}
}
listUsers.
Sort(new GenericComparer<ListUser>("Atividades", GenericComparer<ListUser>.SortOrder.Descending));
this.Controls.Add(new LiteralControl("<h3>Lista de usuarios</h3>"));
this.Controls.Add(new LiteralControl("<table><tr><td><b>Propriedade</b></td><td><b>Valor</b></td><td><b>Descrição</b></td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Total de usuários</td><td>" + listUsers.Count.ToString() + "</td><td>Numero atual de usuarios da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Total de arquivos baixados</td><td>" + checkedFiles.ToString() + "</td><td>O total de arquivos que tem check-out por usuários da lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Total de versões dos arquivos </td><td>" + totalVersions.ToString() + "</td><td>O número total de versões de todos os arquivos criados por usuários da lista </td></tr>"));
string topUsers = "";
int i = 0;
foreach (ListUser listUser in listUsers)
{
i++;
if (i > 5) break;
topUsers += listUser.
User.LoginName + " (" + listUser.Activities.ToString() + " Atividades)<br/>";
}
this.Controls.Add(new LiteralControl("<tr><td valign=\"top\">Top usuarios</td><td valign=\"top\">" + topUsers + "</td><td valign=\"top\">Usuarios top da lista</td></tr>"));
this.Controls.Add(new LiteralControl("</table>"));
this.Controls.Add(new LiteralControl("<h3>Lista Relatório do SharePoint</h3>"));
this.Controls.Add(new LiteralControl("<table><tr><td><b>Propriedade</b></td><td><b>Valor</b></td><td><b>Descrição</b></td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Tamanho total de arquivos</td><td>" + (ConvertBytesToMegabytes(filesSize)).ToString("#0.00") + " MB</td><td>Esta é a quantidade de espaço em disco ocupado pelos arquivos na sua lista. </td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Tamanho total das versões.</td><td>" + (ConvertBytesToMegabytes(versionsSize)).ToString("#0.00") + " MB</td><td>Esta é a quantidade de espaço em disco ocupado pelas versões em sua lista</td></tr>"));
this.Controls.Add(new LiteralControl("<tr><td>Tamanho total das pastas</td><td>" + ((ConvertBytesToMegabytes(versionsSize) + ConvertBytesToMegabytes(filesSize))).ToString("#0.00") + " MB</td><td>Esta é a quantidade total de espaço em disco ocupado pela lista.</td></tr>"));
this.Controls.Add(new LiteralControl("</table>"));

Conclusão

Mais e mais companhias utilizam o SharePoint principalmente para o compartilhamento de arquivos. É por isso que é importante compreender a lista e popular ela de maneira eficiente. Espero que estes relatórios possam ajudá-los a tomar melhores decisões sobre seu uso no SharePoint.

Adicionar Comentários

Título


Corpo *


Anexos