Как обновить / отредактировать SharePoint classi c страниц содержимого / aspx с помощью CSOM - PullRequest
0 голосов
/ 10 марта 2020

Мы успешно перенесли контент из MediaWiki на страницу класса classi c. Однако часть содержимого, полученного из MediaWiki, содержит дополнительную информацию, которая нам не нужна

Есть ли способ через CSOM обновить все страницы ASPX, которые мы создали при переносе содержимого из MediaWiki в SharePoint?

Все, что нам нужно, - это удалить некоторые нижние колонтитулы со всех сгенерированных нами страниц.

Заранее благодарю за помощь всех

1 Ответ

0 голосов
/ 25 марта 2020

Вот код, который работал для меня

    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");
        }
    }
...