cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
thressac
Helper I
Helper I

Create a news post when a list item is created

Is there a flow when a new list item is created it creates a news post with the info from that list item?

1 ACCEPTED SOLUTION

Accepted Solutions
Expiscornovus
Super User
Super User

Hi @PrasadAthalye ,

 

Sorry to bud in. But I think @thressac is talking about SharePoint news posts (pages with promoted state of 1 or 2).

 

If you are talking about another type of news posts, ignore my example below  😁

 

test_newspost.png

 

 

You could create these via the SharePoint REST API. Below is an example.

 

1. Add a when an item is created trigger action. Configure it to use a list.
In my example this CMS_NewsPosts list has two columns, Title and Description (both single line of text type).whenanitemiscreated.png

 

2. Add a Send an HTTP request to SharePoint action. For the creating of the draft news post. Use the site address field for the destination site of the page.

 

URI

/_api/sitepages/pages

 

Body

{"__metadata":{"type":"SP.Publishing.SitePage"},"PromotedState":1,"PageLayoutType":"Article"}

 

restapi_createpage_newspost.png

 

3. Add a Send an HTTP request to SharePoint action. For the checkout of the page. 

 

URI

/_api/sitepages/pages(@{outputs('Send_an_HTTP_request_to_SharePoint')?['body']?['d']['Id']})/checkoutpage

 

restapi_checkoutpage_id.png

 

4. Add a Send an HTTP request to SharePoint action. The title and the text within the page are set.

In this example I am using the Title and a Description field from the trigger action.

 

URI

_api/sitepages/pages(@{outputs('Send_an_HTTP_request_to_SharePoint')?['body']?['d']['Id']})/SavePageAsDraft

 

Body

{
"LayoutWebpartsContent":"[{\"id\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"instanceId\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"title\":\"\\n      Title area\\n    \",\"description\":\"\\n      Title area description\\n    \",\"audiences\":[],\"serverProcessedContent\":{\"htmlStrings\":{},\"searchablePlainTexts\":{},\"imageSources\":{\"imageSource\":\"\"},\"links\":{},\"customMetadata\":{\"imageSource\":{}}},\"dataVersion\":\"1.4\",\"properties\":{\"imageSourceType\":2,\"title\":\"Test\",\"textAlignment\":\"Left\",\"showPublishDate\":false,\"authors\":[{\"id\":\"\",\"upn\":\"\",\"email\":\"\",\"name\":\"\",\"role\":\"\"}],\"showTopicHeader\":false,\"authorByline\":[\"\"],\"layoutType\":\"CutInShape\",\"titlePlaceholder\":\"Name your news post\",\"topicHeader\":\"\"},\"reservedHeight\":356}]","CanvasContent1":"[{\"controlType\":4,\"id\":\"1212fc8d-dd6b-408a-8d5d-9f1cc787efbb\",\"position\":{\"controlIndex\":2,\"sectionIndex\":1,\"sectionFactor\":12,\"zoneIndex\":1,\"layoutIndex\":1},\"addedFromPersistedData\":true,\"innerHTML\":\"@{triggerOutputs()?['body/Description']}\",\"emphasis\":{}},{\"controlType\":0,\"pageSettingsSlice\":{\"isDefaultDescription\":true,\"isDefaultThumbnail\":true}}]","Title":"@{triggerOutputs()?['body/Title']}"}

 

restapi_savepageasdraft.png

View solution in original post

17 REPLIES 17
PrasadAthalye
Super User
Super User

Can you please clarify what do you mean by a new post? Are you referring to a Twitter post?

Please Like and Mark this as Answer if it resolves your Issue.

Power Automate Community
Expiscornovus
Super User
Super User

Hi @PrasadAthalye ,

 

Sorry to bud in. But I think @thressac is talking about SharePoint news posts (pages with promoted state of 1 or 2).

 

If you are talking about another type of news posts, ignore my example below  😁

 

test_newspost.png

 

 

You could create these via the SharePoint REST API. Below is an example.

 

1. Add a when an item is created trigger action. Configure it to use a list.
In my example this CMS_NewsPosts list has two columns, Title and Description (both single line of text type).whenanitemiscreated.png

 

2. Add a Send an HTTP request to SharePoint action. For the creating of the draft news post. Use the site address field for the destination site of the page.

 

URI

/_api/sitepages/pages

 

Body

{"__metadata":{"type":"SP.Publishing.SitePage"},"PromotedState":1,"PageLayoutType":"Article"}

 

restapi_createpage_newspost.png

 

3. Add a Send an HTTP request to SharePoint action. For the checkout of the page. 

 

URI

/_api/sitepages/pages(@{outputs('Send_an_HTTP_request_to_SharePoint')?['body']?['d']['Id']})/checkoutpage

 

restapi_checkoutpage_id.png

 

4. Add a Send an HTTP request to SharePoint action. The title and the text within the page are set.

In this example I am using the Title and a Description field from the trigger action.

 

URI

_api/sitepages/pages(@{outputs('Send_an_HTTP_request_to_SharePoint')?['body']?['d']['Id']})/SavePageAsDraft

 

Body

{
"LayoutWebpartsContent":"[{\"id\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"instanceId\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"title\":\"\\n      Title area\\n    \",\"description\":\"\\n      Title area description\\n    \",\"audiences\":[],\"serverProcessedContent\":{\"htmlStrings\":{},\"searchablePlainTexts\":{},\"imageSources\":{\"imageSource\":\"\"},\"links\":{},\"customMetadata\":{\"imageSource\":{}}},\"dataVersion\":\"1.4\",\"properties\":{\"imageSourceType\":2,\"title\":\"Test\",\"textAlignment\":\"Left\",\"showPublishDate\":false,\"authors\":[{\"id\":\"\",\"upn\":\"\",\"email\":\"\",\"name\":\"\",\"role\":\"\"}],\"showTopicHeader\":false,\"authorByline\":[\"\"],\"layoutType\":\"CutInShape\",\"titlePlaceholder\":\"Name your news post\",\"topicHeader\":\"\"},\"reservedHeight\":356}]","CanvasContent1":"[{\"controlType\":4,\"id\":\"1212fc8d-dd6b-408a-8d5d-9f1cc787efbb\",\"position\":{\"controlIndex\":2,\"sectionIndex\":1,\"sectionFactor\":12,\"zoneIndex\":1,\"layoutIndex\":1},\"addedFromPersistedData\":true,\"innerHTML\":\"@{triggerOutputs()?['body/Description']}\",\"emphasis\":{}},{\"controlType\":0,\"pageSettingsSlice\":{\"isDefaultDescription\":true,\"isDefaultThumbnail\":true}}]","Title":"@{triggerOutputs()?['body/Title']}"}

 

restapi_savepageasdraft.png

@Expiscornovus, your post has been  very helpful.  I'm having a hard time with the formatting on the news post.

Can you offer some pointers?

 

And is there a way to auto post the news post?  

 

Thank you for everything!

 

thressac_0-1616513708728.png

 

Expiscornovus
Super User
Super User

Hi @thressac,

 

Apologies for the delayed reply. 

 

You can use the following HTTP request to publish the news post.

 

publishnewspost.png

Hi @Expiscornovus ,

 

I am getting error as :

The property '__metadata' does not exist on type 'SP.Publishing.SitePage'. Make sure to only use property names that are defined by the type.
clientRequestId: b9b3295e-01b5-433d-9822-00211bbbafc8
serviceRequestId: c94be69f-c0b5-c000-499b-0b63ef4b74ea

 

Kumars100_0-1629178820796.jpeg

 

Hi @Expiscornovus  Sorry for disturbing. Your solution really helped me in doing the bits I wanted for my NEWs post.

Just a tiny questions...How Can I add background Image to the news page.

I added link to the image source in the json but nothing happened , probably I am banging my head searching for the script.

Your help will be immensely appreciated/. Thanks 

test.JPG

 

Hi @Kumars100 probably You might have figured it out by now, if not I also came across same and I typed exactly same like @Expiscornovus with space after json; odata

 

E.JPG

Expiscornovus
Super User
Super User

Hi @schoden,

 

Just had a quick look. It should be possible by updating the control like this in the CanvasContent1 section of the json.

 

 

{\"controlType\":4,\"id\":\"1212fc8d-dd6b-408a-8d5d-9f1cc787efbb\",\"position\":{\"controlIndex\":2,\"sectionIndex\":1,\"sectionFactor\":12,\"zoneIndex\":1,\"layoutIndex\":1},\"addedFromPersistedData\":true,\"innerHTML\":\"<p>This is a description<br></p><p><a href=\\\"https://www.microsoft.com\\\" data-cke-saved-href=\\\"https://www.microsoft.com\\\" target=\\\"_self\\\" data-interception=\\\"on\\\" title=\\\"https://www.microsoft.com\\\">Microsoft Hyperlink</a><br></p>\",\"emphasis\":{},\"zoneGroupMetadata\":{\"type\":0}}

 

 

hyperlinkjson.png

@Expiscornovus Greatly appreciate your time and effort. Helped me so much 😄 

Thoman
Helper I
Helper I

If I wanted to format a table or something the post function fails. I am assuming I need some sort of breaks before I use special characters to set the table styles with this method? I noticed it would also fail if I had new line breaks so I made sure the string I create for my table is formatted into a single line.

 

Adding the Style info causing the post to fail below.

 

<table style="width:100%"><tr><th>Form Number</th><th>Description</th><th>Last Used Date</th></tr><tbody>

 

Also tried creating a variable to store my style settings but doesn't seem to apply when the page is created.

<head><style>table, td, th {border: 1px solid black;}table {border-collapse: collapse; width: 100%;}th, td {text-align: left; padding: 8px;}tr:nth-child(odd){background-color: #f2f2f2}th {background-color: #005b9a; color: white;}</style></head>

 

Hi @Expiscornovus ,

 

If have a file saved in Site Pages already with a promoted state 0. How can I publish it to a news page that will be displayed on the news web part?

 

can I simply uses the publish http request to change the promoted state from 1 to 2?

 

Your expertise will be greatly appreciated - Thanks. 

 

I resolved my issue by using the following URIComponentToString

 

uriComponentToString(replace(uriComponent(variables('Table')), '%0A'''))

Awesome solution, @Expiscornovus, this worked great for me! You are clearly a genius. 😉 Thank you so much!

 

I'm wondering if you can help me take this solution a little further. I would like to write a few custom metadata values from the list to the library when the page is created. Any advice on how I can do that? I've tried a few different approaches but nothing has worked so far.

thanks, @Expiscornovus for the great building of the flow

 

I just have a problem with the step for saving as a draft it always shows me an error bad gateway. When removing the description content it ends successfully. 

I have a similar flow built to create a site page using columns from a list. The flow works fine until I try to insert a rich text column from the list I suspect that it is failing when the html gets inserted into the POST and needs some sort of string replacement. I have used the Compose action with a replace() function to replace " with \" and can see that this action is working, but the POST still fails.

 

Compose:

replace(triggerOutputs()?['body/Detailed_x0020_description'],'"','\"'

 

Resulting POST:

{"__metadata": {"type": "SP.Publishing.SitePage"},"LayoutWebpartsContent": "[{\"id\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"instanceId\":\"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\"title\":\"Title area\",\"description\":\"Title Region Description\",\"audiences\":[],\"serverProcessedContent\":{\"htmlStrings\":{},\"searchablePlainTexts\":{},\"imageSources\":{\"imageSource\":\"https://cdn.hubblecontent.osi.office.net/m365content/publish/165e337b-a8b8-4fa3-84ac-2652220701c9/15...\"},\"links\":{},\"customMetadata\":{\"imageSource\":{\"imgWidth\":2048,\"imgHeight\":939}}},\"dataVersion\":\"1.4\",\"properties\":{\"title\":\"Automate\",\"imageSourceType\":2,\"layoutType\":\"FullWidthImage\",\"textAlignment\":\"Left\",\"showTopicHeader\":false,\"showPublishDate\":false,\"topicHeader\":\"\",\"enableGradientEffect\":true,\"authors\":[],\"authorByline\":[],\"imgHeight\":939,\"imgWidth\":2048,\"hasTitleBeenCommitted\":true},\"reservedHeight\":228}]","CanvasContent1": "[{\"controlType\":4,\"id\":\"0171c194-0f2a-4f56-9868-0c886409c919\",\"position\":{\"zoneIndex\":0.5,\"sectionIndex\":1,\"controlIndex\":1,\"sectionFactor\":4,\"layoutIndex\":1},\"emphasis\":{\"zoneEmphasis\":0},\"zoneGroupMetadata\":{\"type\":0},\"addedFromPersistedData\":true,\"innerHTML\":\"<p><strong>Category:</strong> teaching</p><p><strong>Available to:</strong> employees</p><p><strong>Licensing:</strong> LICENSING</p><p><strong>Install type:</strong> INSTALLTYPE</p><p><strong>Target group:</strong> TARGETGROUP</p><p><strong>Application type:</strong> APPLICATIONTYPES</p><p><strong>System owner: IT</strong> </p><p><strong>Status: active</strong> </p>\"},{\"controlType\":4,\"id\":\"6a8f10b1-ea58-4290-bfff-c23fe79140a6\",\"position\":{\"zoneIndex\":0.5,\"sectionIndex\":2,\"controlIndex\":1,\"sectionFactor\":8,\"layoutIndex\":1},\"emphasis\":{\"zoneEmphasis\":0},\"zoneGroupMetadata\":{\"type\":0},\"addedFromPersistedData\":true,\"innerHTML\":\"<p><div class=\"ExternalClass2D3554E869DD46FA827A0B3A47458D0A\"><div style=\"font-family&#58;Calibri, Arial, Helvetica, sans-serif;font-size&#58;11pt;color&#58;rgb(0, 0, 0);\">TEXT</div></div></p>\"},{\"controlType\":0,\"pageSettingsSlice\":{\"isDefaultDescription\":true,\"isDefaultThumbnail\":true}}]","AuthorByline": [],"TopicHeader": "","BannerImageUrl": "https://cdn.hubblecontent.osi.office.net/m365content/publish/165e337b-a8b8-4fa3-84ac-2652220701c9/15...","Title": "DATEV DMS String 3"}
 
Any ideas?
Fatimah_33
Helper I
Helper I

@atolson I have noticed something for this kind of error. During the posting of the text into the site page, the text is too long and I think it is exceeding the limits of the text which is 256. I have tried to add small text and the workflow run successfully. 

@Fatimah_33 Thanks for the suggestion, but my example has less than 256 characters (even with html tags). 

Helpful resources

Announcements
2022 Release Wave 1 760x460.png

2022 Release Wave 1 Plan

Power Platform release plan for the 2022 release wave 1 describes all new features releasing from April 2022 through September 2022.

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

Top Solution Authors
Top Kudoed Authors
Users online (1,200)