Forum Discussion

MikhailPodolski's avatar
MikhailPodolski
Brass Contributor
Mar 10, 2020
Solved

How to update/edit SharePoint classic pages content/aspx using CSOM

We did successfully migrate the content from MediaWiki into the SharePoint classic page. However, some of the content that came from the MediaWiki has extra information that we don't need.   Is the...
  • MikhailPodolski's avatar
    MikhailPodolski
    Mar 25, 2020

    Here is the answer that worked for me

     

    static void Main(string[] args)
    {
    try
    {
    ClientContext ctx = GetClientContext("https://tenant.sharepoint.com/sites/sitename",
    "usernaname@tenant.onmicrosoft.com", "password");
    var listTitle = "Site Pages";
    var list = ctx.Web.Lists.GetByTitle(listTitle);
    var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
    ctx.Load(items, icol => icol.Include(i => i["WikiField"], i => i["CanvasContent1"], i => i["FileRef"], i => i.ContentType));
    ctx.ExecuteQuery();
    foreach (var item in items)
    {

    switch (item.ContentType.Name)
    {
    case "Site Page":
    if (item["CanvasContent1"] != null)
    {
    if (item["CanvasContent1"].ToString().Contains("certain pattern"))
    {
    ProcessSiteHTML(item["CanvasContent1"].ToString(), item["FileRef"].ToString(), item, ctx, "CanvasContent1");
    }
    }
    break;
    case "Wiki Page":
    if (item["WikiField"] != null)
    {
    if (item["WikiField"].ToString().Contains("certain pattern"))
    {
    ProcessSiteHTML(item["WikiField"].ToString(), item["FileRef"].ToString(), item, ctx, "WikiField");
    }
    }
    break;

    }
    }

    }
    catch (Exception e)
    {
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("Main " + e.Message);
    WriteLog(fileName, "Main " + e.Message);
    }
    finally
    {
    Console.ForegroundColor = ConsoleColor.White;
    }
    }

    private static void ProcessSiteHTML(string page, string pageName, ListItem item, ClientContext ctx, string pageType)
    {
    string pattern = "Regular expression pattern";
    System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.Multiline);
    System.Text.RegularExpressions.MatchCollection matched = rg.Matches(page.ToLower());

    if (matched.Count > 0)
    {
    System.Text.RegularExpressions.Match m =
    System.Text.RegularExpressions.Regex.Match(page, pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);

    string updatedField = System.Text.RegularExpressions.Regex.Replace(page,
    m.Value, string.Empty, System.Text.RegularExpressions.RegexOptions.Multiline | System.Text.RegularExpressions.RegexOptions.IgnoreCase);
    item[pageType] = updatedField;
    item.Update();
    ctx.ExecuteQuery();
    Console.WriteLine(pageName + " has been updated");
    }
    }

Resources