getitems - sharepoint online javascript client object model
SharePoint CSOM, recuperando colecciones de sitios. Limitado a 300? (2)
Estoy tratando de recuperar la lista de colecciones de sitios de un dominio de SharePoint Online.
Estoy usando C # y el modelo de objetos del cliente.
El siguiente código devuelve solo 300 colecciones de sitios.
var tenant = new Tenant(ctx);
spp = tenant.GetSiteProperties(0, true);
ctx.Load(spp);
ctx.ExecuteQuery();
¿Alguna idea sobre cómo recuperar TODAS las colecciones de sitios con CSOM?
Gracias
Encontré la respuesta a esta pregunta,
el primer parámetro del método GetSiteProperties es el índice desde el que se inicia la recuperación de la colección de sitios.
Probé el siguiente comando spp = tenant.GetSiteProperties (300, verdadero);
que devolvió las colecciones de sitios del índice 300.
Así que aquí está mi código para obtener todas las colecciones de sitios de sharepoint en línea
SPOSitePropertiesEnumerable spp = null;
var tenant = new Tenant(ctx);
int startIndex = 0;
while (spp == null || spp.Count > 0)
{
spp = tenant.GetSiteProperties(startIndex, true);
ctx.Load(spp);
ctx.ExecuteQuery();
foreach (SiteProperties sp in spp)
siteCols.Add(new SiteCol(sp.Title, sp.Url));
startIndex += spp.Count;
}
Por cierto, las colecciones de sitios están actualmente limitadas a 10000.
Supongo que NextStartIndex no existía en el momento en que se solicitó, hoy en día se puede hacer:
SPOSitePropertiesEnumerable sites;
List<string> allSites = new List<string>();
int startIndex = 0;
do
{
sites = tenant.GetSiteProperties(startIndex, false);
ctx.Load(sites);
ctx.ExecuteQuery();
allSites.AddRange(sites.Select(s => s.Url));
startIndex = sites.NextStartIndex;
} while (sites.NextStartIndex > 0);