Two ways to remove search results in SharePoint

In this post we will take a look at two different ways to remove search results in classic and modern SharePoint.

Introduction

There may be occasions in SharePoint where you are required to remove an item, or items from the search results. When we are talking about search results, we are referring to the items that are returned when a user initiates a search in SharePoint.

Search results in modern SharePoint.

Click on one of the buttons below to find out more about how you can remove search results in both classic and modern SharePoint:

How to convert SharePoint pages into PDF files

In this post we step through how you can use Power Automate to convert modern SharePoint pages into PDF files and save them to a document library.

Intro

Recently I got asked to come up with a way to turn SharePoint pages into PDF files for use in an offline scenario. The converted SharePoint pages didn’t need to be formatted as it was only the body content of a SharePoint page that was needed. Also part of the brief was that when the SharePoint page is updated, the corresponding PDF file also updates.

There are several posts online that cover very topic this that I’ll reference at the end, but they didn’t quite do exactly what I wanted – so here’s my take on how to convert SharePoint pages into PDF files!

What you’ll need

  • A modern SharePoint site pages library (these come with every SharePoint site!)
  • A OneDrive location to temporarily store the SharePoint page outputs
  • Power Automate to build the automation
  • A document library to store the output PDF files

A note on the site pages library

In my example I didn’t want all the site pages to be converted into PDF files, so I added a choice column to ‘tag’ all the pages that should be converted. I set the default value of the choice column to be ‘Site Page’, so that the only pages that get converted are the ones I’m interested in. This is reflected in the flow below with the condition step.

Add a choice column to ‘tag’ the pages you wish to convert to PDF.

Building the flow

The trigger action for our flow is when a file is created or modified (properties only). This allows us to re-run the flow when SharePoint pages are updated to also update the PDF files.

  • Select the site you are using to create the SharePoint pages in site address (If you don’t see it listed just press enter custom value and paste the URL in)
  • Select the Site Pages library under library name

Next, I’ve added a condition to only convert pages that have been tagged ‘Runbook’ to PDF.

Condition: if Document type value is equal to ‘Runbook’.
  • Note: make sure you select the Value dynamic content for your choice column, rather than the choice column itself as that will break your flow.

If yes, next is a send an HTTP request to SharePoint step. Here I’m using a REST API call to get the body content of the SharePoint page.

Use a send an HTTP request to SharePoint step to get the body content of your page.
  • Set the site address to the site in question
  • Set method to GET
  • Enter the following in Uri:_api/web/lists/GetByTitle('Site%20Pages')/items('ID')/CanvasContent1
  • Replace ‘ID’ with the dynamic content ID from the when a file is created or modified step

Note: The output of this step generates some additional stuff you probably won’t want in your PDF like this:

 "d": { "CanvasContent1": "}}

I used the parse JSON step to remove the unwanted mark up and just get the plain text from the body content.

  • I added the body dynamic content from the send an HTTP request to SharePoint step in the content field in the parse JSON step
  • I copied the the output body from send an HTTP request to SharePoint of a successful run in flow history and pasted it into the parse JSON step
Output body from send an HTTP request to SharePoint to paste into the parse JSON step from a successful flow run.
  • I then pressed generate from sample, which output the following:
{
    "type": "object",
    "properties": {
        "d": {
            "type": "object",
            "properties": {
                "CanvasContent1": {
                    "type": "string"
                }
            }
        }
    }
}

Parse JSON step with generated schema.

From this I then used a create file action to create a temporary HTML file in OneDrive (more on this later), with the following config:

  • Folder path: / (root of the OneDrive account)
  • File name: Name from when a file is created or modified step
  • File content: CanvasContent1 from the parse JSON step
Create file action to create temporary HTML page in OneDrive.

Next, a convert file step to convert the HTML page into a PDF file:

  • File: ID from the create file step
  • Target type: PDF

Now we can use a create file action to create a PDF in our output document library in SharePoint:

  • Set the site address to the site you want to store the PDF files in
  • Set the folder path to the document library, or navigate to the relevant folder within that library
  • Set file name to file name from the convert file step
  • Set file content to file content from the convert file step
The create file action creates the PDF file in the destination document library.

I then used an update file properties action to pass metadata from the site pages library to the destination document library – this step is optional. Finally, a delete file action to delete the temporary HTML file from the OneDrive we created earlier:

Delete file action to remove the temporary HTML file.

Here’s the flow in it’s entirety:

Issues & troubleshooting

Formatting issues with the send an HTTP request to SharePoint

As mentioned above, when just using the send an HTTP request to SharePoint action, the output contains mark up that isn’t going to make sense within the PDF. The parse JSON action cleans this up and just leaves the body content of the page.

Create file action creates corrupt PDF files

When testing this flow out I originally didn’t have the convert file action in place. In the file name I added ‘.PDF’, but every time the output PDF was corrupt and errored like this when trying to open:

The flow also failed on this step and the error said that “Conversion of this file to PDF is not supported. (InputFormatNotSupported / pdf)”. I decided to scrap this approach and create a HTML page and add in the convert file action which worked around this issue.

Overwriting existing PDF files causes flow to fail

During testing of this flow I also noticed that when triggering the flow based off updating a site page, the create file create file action would error with a status 400 error saying “A file with the name [file name] already exists”.

I’ve wrote a separate post on how to overwrite files using the create file action, but basically the answer was to turn off chunking within the actions settings.

References


This page is not using a valid page layout – how to fix

This post describes an issue when trying to view classic publishing pages in SharePoint Online and how to resolve.


The issue

After migrating publishing sites from SharePoint 2010 – SharePoint Online, I encountered an issue with classic SharePoint Server publishing pages. Post-migration, some publishing pages wouldn’t open and displayed this error message:

Fix publishing pages with custom page layouts created from template - HANDS  ON SharePoint
Now another issue with this was that quite often the publishing pages affected were the migrated sites’ homepage – rendering the whole site inoperable! Microsoft have an article on the issue here and state that the cause is that “The .aspx page is using an invalid page layout, or the current layout is corrupt”.

Resolution

The Microsoft documentation on how to resolve this is pretty good, but I found it didn’t quite get me to fix my issue. Here’s what I did:

  • Navigate to Site Content & Structure: /_layouts/sitemanager.aspx. NOTE: You need to be a SharePoint admin to access
  • Open the Pages library > find your broken page > click on the drop-down button and press edit page settings
  • Select the (Welcome Page) Blank Web Part Page layout
  • Press OK

When I had to do this for my broken pages, there was a warning message above the page layout that said “Current page layout is not valid. Please select a valid page layout from the drop down list below”. I just selected the (Welcome Page) Blank Web Part Page layout anyway, pressed OK and it worked.


How to overwrite files using the create file action in Power Automate

In this post we explore a common error experienced when trying to update existing files in SharePoint using the create file step in Power Automate – and how to resolve it.

The problem

I recently ran into an issue seemingly many others have encountered when trying to update an existing file in SharePoint using the create file step in Power Automate. When running my flow, I received the following error:

Bad Request error in Power Automate when trying to use the create file step to update an existing file in SharePoint.
  • Bad Request status: 400
  • Message: A file with the name [NAME OF FILE] already exists. It was last modified by [NAME OF USER] on [DATE]

The solution

The solution to this has already been shared a fair few times via the Power Automate blogs, but here it is:

  • Press the ellipsis … > settings within the create file step
Open the ellipsis and press settings within the create file step.
  • Scroll down until Content Transfer > set allow chunking to off
  • Save and re-run your flow

That’s it, now when I use the create file step to update existing files, it runs successfully!

Note: Chunking of content is used for splitting up large content for downloads/ uploads. You may need to consider this before turning off chunking in your flow. More information on chunking can be found here.


How to find the internal name of list or library columns

This post is a guide on how to find the internal name of columns within Microsoft lists or document libraries in SharePoint.


In this post:

Intro
Option 1: list/ library settings
Option 2: sort or group by the column
Option 3: REST API request
Option 4: Microsoft Graph Explorer

Intro

Columns in Microsoft Lists/ SharePoint lists & libraries have two main names – their display name that you can see within the list or library and their internal name. Sometimes you may be required to use a column’s internal name (for example: when creating column/list view formatting). There are several ways to do this, depending on the column so take a look below for more:

NOTE: In the examples below I will be focusing on lists, but the same applies for document libraries.

Option 1: list/ library settings

This is by far the easiest way to get the internal name of a column. All internal custom columns, plus several of the out-the-box column names within lists or libraries can be found by heading to list settings and clicking on the column itself:

  • Press the cog > list/ library settings
Press list settings from the cog menu.
  • Scroll down until you see columns > select the column
  • The Field= end part of the URL in the browser will show you the internal name of your column (Modified By in my example)
Editing the column will show you the internal name of the column from the Field= part at the end of the URL .

Option 2: sort or group by the column

Some out-the-box columns don’t appear within list settings, but you can still get their internal name by either grouping or sorting based on the particular column. For example, the file size column is an out-the-box column that isn’t you won’t find in list settings. If you add this column to your list/ library view and sort you can get access to the internal name:

  • Click on the drop-down and press show/ hide columns
  • Select the column you wish to add > tick it > press apply
  • Select the drop-down next to your newly added column > either sort by or group by depending on what is available
    • For sorted columns – look for the sortField part of the URL to get the internal name of your column
URL example to find the internal name of sorted columns
  • For grouped columns – look for the groupBy part of the URL to get the internal name of your column
URL example to find the internal name of grouped columns.

Option 3: REST API requests

SharePoint has a REST API service that allows you to perform CRUD operations by using REST HTTP requests. There is much more information about the SharePoint REST service here, but you can use GET requests via the browser to return information as per your requirements.

In our example, we want to return all the internal column names from a given list. To do this we simply need to send a REST request to SharePoint as follows:

https://[YOUR SITE].sharepoint.com/_api/Web/Lists(guid'[YOUR GUID]')/Fields

This will return a huge wall of text, but if you CTRL+F and search for the name of your column or use a code editor you will find the internal name and display name:

Option 4: Microsoft Graph

You can also use the MS Graph Explorer to do something similar to a REST API request. The graph explorer allows you to create a run requests via an easy to use interface that also shows you the results. In our example I ran the following GET request via graph explorer:

https://graph.microsoft.com/v1.0/sites/[YOUR TENANT].sharepoint.com/sites/[YOUR SITE]/lists/[YOUR LIST]/Columns
Entering the above request in Graph Explorer will return you all the internal column names in your list.

Which allowed me to look through the response preview to find my file size column’s internal name:


Description column in SharePoint libraries – how to use

In this post we take a look at the description column that is available within SharePoint Online document libraries and how to make use of it.


There is a description column available in modern SharePoint document libraries. This description column comes out of the box when you create a new document library, or when you add/remove columns from the existing Shared Documents library that comes with every Team/ SharePoint site.

The problem

The description column exhibits some very strange behaviour. First of all, when you try add it to a library view it does not appear within the properties pane, nor is it a column you can add via edit “columns”.

When adding the properties column to document library views you are not able to edit the column.

If you add the column into a document library view and switch to edit in grid view mode, the column becomes read only meaning you can’t add anything into any of the cells within the library.

If you try to edit the column via edit in grid view the cells within the library are read-only.

The solution

This is more of a workaround than a solution as this appears to be a bug rather than desired behaviour. If you make the column mandatory, then optional it seems to do the trick! To do this:

  • Left-click on the Description column heading > column settings > edit
  • Press more options > set require that this column contains information to yes
  • Press save
Set the Description column to required, then optional to enable editing.
  • With this setting changed, when you edit your document library in grid view now you are able to enter data into the Description field
Once you have made the Description column required, you are able to add data via grid view.
  • Go back to edit the Description column settings and switch off require that this column contains information to make it optional

Add Description column to properties pane

Although the above will allow you to add data to the Description column, it will not add the Description column into the properties pane. You can get the Description column to appear by adding it to the default content type in the document library. Here’s how you can do it:

  • Press the cog > library settings
  • Under general settings > advanced settings
  • Set allow management of content types to yes
  • Press OK
Set allow management of content types to yes in the document library.
  • Scroll down to content types > select the document content type
  • Press add from existing site or list columns
Press add from existing site or list columns to add the Description column to the Document content type.
  • Ensure the Description column is selected > press add
  • Press OK
Add the Description column into the Document content type.

Go back to your document library, select a document and open the properties pane. You will now see the Description column is displayed in the properties pane, as well as being an editable field when you press edit all.

Bonus! History lesson and give your feedback

This description column appears to be a rather recent addition to all tenants, making it’s appearance in summer 2021 with the advent of Microsoft Lists. I went back to SharePoint 2010 just to double-check and sure enough the Description column was not present!

Out of the box SharePoint 2010 document library with no description column.

I’ve added a new item to the Microsoft feedback portal (UserVoice replacement) in the hope this gets addressed by the SharePoint product team so if you could upvote it that would be great!


Microsoft 365 roadmap roundup – year in review 2021

With 2021 drawing to a close, I thought it would be useful to go back through the Microsoft roadmap and look at the year in review, highlighting some of major releases and others that have caught my attention.


Microsoft roadmap
Year in review
2021

The link above covers all the stats from the Microsoft roadmap in an infographic format. I’ve gone through the site to list out the top 10 roadmap posts of the year plus a selection of my favourite releases along the way.

Top 10 most viewed roadmap posts of 2021

These are the top ten most viewed roadmap roundup posts from the blog for this calendar year:


Top 5 launched features 2021

This list is in no particular order, but just the launched features I found the most noteworthy in 2021:

SharePoint

1. SharePoint: Swap root site from SharePoint admin center for customers with 10k+ seats – Customers with more than 10K seats or more can now swap their SharePoint root site from within the SharePoint admin center user interface. Roadmap ID: 72224

The Replace root site panel in the new SharePoint admin center

2. SharePoint: Scenario-Based Site Templates – Use scenario-based site templates that leverage existing SharePoint capabilities (e.g. pages, lists, libraries, branding) to build your own sites faster and get inspired. Roadmap ID: 70574

3. SharePoint: Company-Branded Auto News Digest – Now you can also roll up your news posts into a great-looking digest that you can send in a company branded Auto-News Digest email. Roadmap ID: 70606

4. SharePoint Syntex: Modern site-level term store – A modern experience to create and manage site-level taxonomies for your sites. It’s now easier to navigate your taxonomies and create and edit terms when classifying & discovering your Syntex and SharePoint content. Roadmap ID: 85638

5. SharePoint: Microsoft Lists Updated sharing experience – Create unique sharing links for lists based on who and how you wish to share them, while adhering to any sharing settings per established IT and governance planning and policies. Roadmap ID: 81965

Microsoft Teams

1. Microsoft Teams: Reply to a specific message – When chatting in Teams, you will be able to reply a specific message. The original message will be quoted in the reply text box -quoted replies will be available in 1:1, Group and Meeting chats. Roadmap ID: 81113

Reply to specific chat message in Microsoft Teams Desktop

2. Microsoft Teams: Breakout Room Timer, Room Retention, and Participant Reassignment – You can now set a timer for Breakout rooms. After timer has expired, rooms will automatically close and participants will come back to the main meeting. Room assignment retention provides the ability to persist room configuration and assignment over multiple sessions. With participant reassignment capability, organizer will now be able to move joined participants across rooms and main meeting also when rooms are opened. Roadmap ID: 81372

Image shows how to set time limit for breakout rooms.

3. Microsoft Teams: Manage team templates with template policies – Manage the team templates that your end users see by creating templates policies in the admin center. Within each template policy, you can designate which templates are shown or hidden. Assign different users to different template policies so that your users view only the subset of team templates specified. Roadmap ID: 70701

The template policies is selected and Add is highlighted.

4. Microsoft Teams: Disable/Enable all Attendee’s Video – Ability to disable and enable video for all attendee’s before, or during, a Microsoft Teams meeting. Roadmap ID: 70621

Don't allow attendees to unmute option

5. Microsoft Teams: Align the experience creating a team from different Teams interfaces – Align the experience for Teams creation in Teams Admin Center to the experience in creating a team in the Teams client. Roadmap ID: 70696

Create a team

OneDrive

1. OneDrive: Dialog on First-Time deletion of File(s) – When a user deletes a file(s) for the first time, they will be shown a dialog to educate them that their file is in the OneDrive recycle bin where it can be restored. This will show up on subsequent deletes until the user checks the box stating they do wish to see it again. Roadmap ID: 70702

First delete dialog alert for OneDrive files - M365 Admin

2. Immersive Reader support in OneDrive and SharePoint – Users can now open Word files directly into Immersive Reader from inside OneDrive and SharePoint. Roadmap ID: 81954

thumbnail image 3 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Immersive Reader comes to PowerPoint for the web, OneDrive, SharePoint and MakeCode

3. OneDrive: Request Files for GCC High and DoD – The Request Files feature is now available for the GCCH and DoD environments. Roadmap ID: 72228

Request files UI

4. OneDrive for Business: Progressive Web App (PWA) – You can now install the web version of OneDrive for Business as a Progressive Web App (PWA) in Microsoft Edge, Google Chrome, Firefox, or other browser that supports Progressive Web Apps. Roadmap ID: 82040

5. OneDrive: Android – Night time reading mode for PDF viewing – Users of OneDrive for Android will be able to change the appearance of PDFs in three main color modes which are day mode, night mode and sepia to enhance viewing. Roadmap ID: 72230

Information Protection

1. Microsoft Information Protection: Enhanced simulations and location support for auto-labeling in SharePoint Online and OneDrive for Business – Auto-labeling in SharePoint Online and OneDrive for Business has been updated with improved performance and ability to configure more locations. The configuration limit of 10 locations in a policy has been removed. Roadmap ID: 82060

Choose locations page for auto-labeling configuration.

2. Microsoft 365 compliance center: Information governance – Multi-stage disposition review – This update allows organizations to use a multi-stage disposition process, including multiple stakeholders and reviews before deleting the content. Roadmap ID: 70579

Specifying disposition reviewers.

3. Microsoft Information Protection: Configure external sharing for sensitivity labels in Teams and SharePoint sites – With this update, you can set controls on external sharing while configuring a Team or site protection policy. Roadmap ID: 70735

A sensitivity label when creating a team site from SharePoint.

4. Microsoft 365 compliance center: Advanced eDiscovery – Historical versions – This capability will enable organizations to quickly search across not only the current version of documents, but all the versions of the document. Roadmap ID: 81898

Switch on the toggle to enable historical versions

5. Microsoft 365 compliance center: Retention for Teams – Admins will be able to apply retention and deletion policies to Teams chats and conversations. Roadmap ID: 81963

A look at the roadmap in 2022

Here are 5 interesting features on the roadmap due for release in 2022:

  1. SharePoint: Migrate SharePoint 2010 and 2013 workflows to Power Automate – Provide Microsoft 365 customers with a tool to migrate SharePoint-based workflows to Power Automate. You will be able to migrate SharePoint 2010 (out-of-the-box) workflows and SharePoint 2013 (SharePoint Designer) workflows to Power Automate flows. Initially this will be implemented via PowerShell, and in future it will be more integrated into the SharePoint Migration Tool (SPMT). Roadmap ID: 82108
  2. Microsoft Teams: Pairing the channel and the corresponding SharePoint folder name –  When renaming a Teams’ channel, the corresponding SharePoint folder will be renamed and reflect the new name. This new feature will be available for all Standard and Private channels. For Standard channels – The corresponding folder in SharePoint will be renamed. For Private channels – The corresponding site name and the folder in SharePoint will be renamed. For legacy Teams channels that were renamed prior to this rollout, there will be no change in experience. When a legacy channel is renamed after this release, it will simultaneously rename the corresponding SharePoint folder.  Roadmap ID: 72211
  3. OneDrive and SharePoint for Business: Library Dropdown – We’re adding a dropdown that allows you to easily switch between multiple document libraries associated with a Team or Site. Roadmap ID: 81990
  4. Microsoft Viva: Praise History in Microsoft Viva Insights – The Praise app in Microsoft Teams is designed to help recognize the effort that goes into the wide-ranging, collaborative work that Teams users do. Users can send Praise to their colleagues through the messaging extension pinned to the Teams messaging bar for most users or through the Microsoft Viva Insights app in Teams. With Praise history, users will be able to view their sent and received praise over the past six months. Roadmap ID: 85639
  5. Microsoft Information Protection: Auto labeling (for files at rest in SharePoint Online) can now label PDF files – This feature enables you to label PDF files at rest via the auto-labeling engine as you would Word, Excel, or PowerPoint files. Roadmap ID: 85618

Thanks for reading and look forward to a great 2022 for roadmap updates!


Edit in grid view button missing – how to resolve

In this post we take a look at the common causes for the edit in grid view button to not be visible in SharePoint Online & Microsoft Lists.

The problem

Edit in grid view was made generally available to all Microsoft customers in February 2021 and is available for lists and document libraries in SharePoint Online or Microsoft Lists. I recently had an issue reported to me that the edit in grid view button was missing from the ribbon in a SharePoint Online document library.

After taking a look myself, sure enough this was the case and the option wasn’t present. The first thing to note about this particular document library was that the default view had grouping enabled on a particular column. In trying to replicate the issue, at first when I created a new document library the edit in grid view button was present:

I noticed that when I applied the same grouping to the view the edit in grid view button disappeared!

Applying a grouping to a library view causes the edit in grid view button to disappear.

The solution

The solution for this is more of a workaround as this appears to be a Microsoft bug. I decided the best way to get around this was to create a specific view that defaults into grid view mode when selected. To do this:

  • With your library open > press the cog > library settings
  • Scroll down to views > press create view
  • Select datasheet view
  • Give the view a name > select the columns you wish to display > press OK

Now you have a view that defaults to grid view without users having to select it!

Other ways around this issue would be to:

  • Remove the grouping for the view in question to allow edit in grid view
  • Create a new view with the grouping removed and show users how to find it to edit in grid view

Unfortunately this seems to be an bug that although it has been raised with Microsoft, the SharePoint UserVoice has since been shut down so it’s unclear if it is being worked on or not. You can raise feature requests through the Microsoft feedback portal.

Bonus – free history lesson!

Out of curiosity I wanted to see if this was an issue in SharePoint 2010 as I was sure I would have come across it by now. As expected, it wasn’t and datasheet view works fine when views have groupings within them.