Adjust column widths in classic SharePoint lists using CSS (including “Quick Edit”/datasheet views)

Once upon a time two years ago (two years?!?) I shared how you can adjust SharePoint column widths in traditional views using JQuery.

But adjusting the same widths in datasheet mode (quick edit, for example) is a bit different. After a bit of fiddling around, I found an answer that will allow you to adjust column widths for both standard and datasheet view types using just CSS.

The difference is in how you reference the column names in the css:

  • Standard (catches both filterable and non-filterable columns such as multi-line text): div[DisplayName=’Column1′], div[DisplayName=’Column1′]{…
  • Datasheet: th[Title=’Column1′] {…

Everything that follows that first line is the same in both types of views, fixing a minimum and regular width property for the column(s).

Standard Views (not quick edit)

<style> div[DisplayName='Justification'], div[DisplayName='Justification']{

Datasheet/Quick Edit Views


All Views

So if you’re including just one script reference for all views in your list, you’d be safe to include all formats in the script.

th[Title='Justification'], div[DisplayName='Justification'], div[DisplayName='Justification']{

Multiple columns

For multiple column width adjustments, just include another block for each column as seen here:

th[Title='Justification'], div[DisplayName='Justification'], div[DisplayName='Justification']{
th[Title='Other Column'], div[DisplayName='Other Column'], div[DisplayName='Other Column']{

Join me at SharePoint Fest Seattle Aug 19-23, 2019

I’m honored to be among many fantastic presenters for SharePoint Fest Seattle. When first learning SharePoint, SharePoint Fest Seattle was the first big conference I attended. I was an administrative associate at the time. I remember attending a workshop on SharePoint Designer workflows by Vlad Catrinescu and thinking it was the coolest thing I’d ever seen.

Each night of the conference, I’d stay up late working on things I’d learned or ideas I’d gotten during the day. After the conference, I dove all in and ended up working full-time in SharePoint. My job transformed into a SharePoint Business Analyst role. Fast forward, now I’m a Microsoft MVP, Microsoft 365 Certified Enterprise Administrator Expert, author, blogger, user group leader, and a SharePoint Systems Engineer at LMH Health.

I’m continually wowed and re-energized by all that’s coming out of Microsoft. And I’m excited to be on the other side of the podium for a few sessions this year, sharing some of my favorite topics. And, as always, I’m looking forward to sitting in the audience as well for what is certainly one of the year’s best professional development opportunities.

Come discover how SharePoint Fest Seattle can expedite your career growth through professional development and inspiration. Register today at and use code Chamberlain100 to save $100 off your pass.

I’ll be presenting these three sessions, as well as sitting at the “Ask the Experts” booth a couple times. I hope I’ll see you there!

INT102 – Building the Intranet of the Future: Using SharePoint to Empower Collaboration

Automation, organization, incredible search capabilities and user interactivity; all things your organization can have in choosing to build an intranet with SharePoint. 

We’ll discuss avoiding File Dump 2.0 by exploring best practices in internal communications and collaboration via intranets, rethinking forms and minimizing busy work by utilizing automation capabilities in SPD workflows and Microsoft Flow and designing intuitive navigation.

CM202 – SharePoint wizardry for content management, archiving & retention

Are your muggles muddying up your servers and site storage with duplicate files, pictures from a 2008 staff party and files named “April” in folders called “Jane’s stuff”? 

Learn how to most effectively destroy the 8th horcrux using out-of-the-box functionality in SharePoint brewed with bits of governance, content strategy and just a little help from SharePoint Designer to help automate processes. It’s just like magic!

BV303 – You’re the one, OneNote!

Are you looking for more productivity in your life? Sticky notes leaving you…unsatisfied? 

Sit back and enjoy this journey through the sweetest productivity story ever told, where you’ll be inspired to take “note” of new ways of working more efficiently day-to-day with OneNote. When it comes to working smarter and not harder, OneNote is the one.

Solution: “The embed code is invalid because the source of the embed content is not allowed” error when embedding Microsoft Stream video in SharePoint

A user recently ran into the following error when attempting to embed a Microsoft Stream video on a SharePoint 2016 site:

“The embed code is invalid because the source of the embed content is not allowed.”

To resolve this, you must be a site collection administrator.

Go to site settings and select “HTML Field Security” under “Site Collection Administration.”

By default, SharePoint allows embeds from YouTube, Bing, Vimeo, and Microsoft but we need to add to the list.

Now try to embed your video again, and it will work.

SharePoint search results showing wrong title

I recently ran into the issue of a document appearing in search results that didn’t use the name field OR the title field. I was perplexed by this until checking the search schema for the “Title” field. In an attempt to be helpful, there’s a property called MetadataExtractorTitle that was given higher preference than the actual title field. To fix this, I simply had to bump it down the list a bit.


The document in question is a SharePoint Governance meeting agenda named SP Governance – 2017-11-17.

It appeared correctly in its library, which is to be expected:

And a look at its properties revealed there was no Title value, meaning it would default to the document name.

However, when searching for “SP” I found the document listed as “Agenda.” This was used because the MetadataExtractorProperty found “Agenda” within the document as a potential title (as the first line of the document).


Note: You must be at least a site collection administrator.

Go to Site Settings at the top level of the site collection for the document library.

Choose “Search Schema” under Site Collection Administration (not just “Schema” under search – that’s only site level)

Search for title and edit the property

Move “MetadataExtractorTitle” down until it’s beneath ows_Title. Click OK when finished.

Click to enlarge

Checking your work

After fixing the schema, go back to the document library and re-index it to check. (Library Settings –> Advanced Settings –> Reindex Document Library)

This will have the library re-crawled during the next incremental crawl (interval depends on administrator settings). Alternatively, you could trigger it immediately or run a full crawl.

Once the crawl has run, try your search again. Your items should now have a correct title when appearing in search results.

Run Google Chrome as a different user to test

In an on-prem environment, it’s convenient to be able to run Chrome as a test user with general permissions instead of my admin permissions. This possibility makes it so I don’t need to remote to another machine or log out and in with another account just for a simple check.

Using Internet Explorer? Here’s how to do the same with that.

If you have a shortcut to Chrome on your desktop (not your task bar), skip ahead to step two.

1. Search “Chrome” from the start menu, right click and select “Open File Location”

2. Hold “Shift” on your keyboard and right-click the Internet Explorer icon. Select “run as different user”

3. Enter the credentials for the second user (your screen/prompt may look different) and click OK/Login. In some cases, you may be prompted to enter these more than once.

Chrome will now run as if the other user is logged in.

You can also use the “Check permissions” feature in SharePoint to see which groups a user belongs to for a site or resource, and which abilities/privileges they have.

Run Internet Explorer (IE) as a different user to test

It’s often helpful in our on-prem environment to be able to run IE as a test user with general permissions instead of my admin permissions. This possibility makes it so I don’t need to remote to another machine or log out and in with another account just for a simple check.

Using Google Chrome? Here’s how to do the same with that.

If you have a shortcut to IE on your desktop (not your task bar), skip ahead to step two.

  1. Search “IE” from the start menu, right click and select “Open File Location”

2. Hold “Shift” on your keyboard and right-click the Internet Explorer icon. Select “run as different user”

3. Enter the credentials for the second user (your screen/prompt may look different) and click OK/Login. In some cases, you may be prompted to enter these more than once.

IE will now run as if the other user is logged in.

You can also use the “Check permissions” feature in SharePoint to see which groups a user belongs to for a site or resource, and which abilities/privileges they have.

Check permissions for an individual or group in SharePoint

If you want to see which groups a user belongs to, or how an individual is granted (or restricted) access to a particular site or resource, use the “Check permissions” button in Site Settings –> Site Permissions (or any advanced permissions page).

SharePoint 2016 example of checking permissions
SharePoint Online example of checking permissions (see specific allowances)

Have you been pwned? Here’s how to update your Microsoft password(s) and upgrade your security

The word ‘pwned’ (pronouned pōn’d) was more present in written works around 1800, likely because of typos due to the proximity of “p” to “o” on keyboards. We know it in a modern context as an actual term, reclaimed by video game communities to mean utterly defeating an opponent (Dude, you got pwned!) or in cyber-security conversations meaning an unwelcome party gained ownership of your credentials through a data breach or hack.

The appearance of ‘pwned’ in written works from 1800-2008. Source: Google Books Ngram Viewer

With data breaches and hacker activity being more prevalent, it’s more important than ever to protect yourself and your information from being pwned.

Have I been pwned?

There are several free ways to find out if you’ve been included in a data breach or credential publishing.

  • lets you enter your email address to see which breaches you were discovered in (if any)
  • has identity monitoring for the email address you used to register. It’s a free service, and will tell you if you email address surfaced in any breaches or credential leaks and any associated passwords. Go to Resources –> Identity Monitoring
  •’s Security Score will show you specifically which sites have been compromised so that you can change those specific passwords. It’ll also help you fix the “duplicate password” issue where you use the same password for everything AKA one data breach gives bad actors access to all your stuff.

What’s a secure password? demonstrates that pass phrases (not passwords) are significantly more secure than traditional abc123! type passwords. The site will tell you how long it would take hackers to figure out (crack) your password using bots.

  • The typical password requirements you’ll find might have you make a password like ‘sPlib197!’ which will only take 149 days to crack.
  • While phrases are generally more secure, you have to be careful to select a phrase that is NOT logical in structure. For example, a logical sentence like ‘I love kitties!’ would take 18 days to crack. But illogical collections of words like ‘stopping plots argument received’ would take 467,000 centuries to crack. Throw in a capital letter and a special character and you’re set for a few lifetimes.

How to update your Microsoft passwords

Personal accounts

1. Log in at

2. Click on Security

3. Click Change Password and follow prompts

Work or school accounts

Note: Your organization may have a different method for updating your password. This is the general, out-of-the-box update method:

1. Go to

2. Click on “Security & Privacy” then “Password”

3. Follow prompts

Upgrade your security (enable two-factor authentication)

Two-step, or multi-factor, authentication helps guarantee it’s actually you logging into one of your sites. You’ll find this security option on all kinds of services including Google (gmail), Microsoft (outlook), and your banking sites. I highly recommend setting this up on every site you’re able to.

What is it? Basically, when you attempt to login using your credentials as usual (or someone who stole your data is attempting to log in as you), you’ll either use the Microsoft Authenticator App to approve a login from your mobile device or you’ll receive a text code to enter into a prompt to show that not only do you know your credentials, but you acknowledged the login from a phone number or mobile device you registered.

Personal accounts

1. Log in at

2. Select “Set up two-step verification” (learn more about two-step verification)

3. Follow the prompts to device’s number as an additional layer of security

4. Return to the same URL in step 1 and click “Set up identity verification app” which will have you install the Microsoft authenticator app on your phone. When someone attempts to log in using your credentials, you’ll get a push notification to approve or reject the attempt before they’re allowed access. (learn more about using the authenticator app)

5. Follow the prompts to install and activate the app

Work or school accounts

You administrator handles the setup of multi-factor authentication. This article does a great job of explaining how to enable it for your users.

Add a “project health” stoplight status indicator to your classic sites

Note: Demo/Screenshots from a SharePoint 2016 environment.

With a little bit of work, you can have a stoplight status indicator on your project’s or team’s home page. You’ll need:

  1. A classic view site (Project or SharePoint) on which you’ll be placing the project health status indicator
  2. A CSS file in your site assets
  3. A list named “Project Health” to manage the statuses
  4. A web part for “Project Health” placed where you want it to display indicators

Note: If you have O365 or SharePoint 2019’s modern experience, explore conditional formatting with JSON instead.

Add the CSS file to your site assets

Save the first script below as stoplight.css and add to your site assets folder. You’ll need the second OR third snippet in the next section (depending on if you want to use dots or images/icons).

Create the Project Health list

Create a new list on your site and name it Project Health. You’ll need these columns:

All of the choice columns (KPI in name) will be dropdowns with these options:

  • 1 – Green
  • 2 – Yellow
  • 3 – Orange
  • 4 – Red

The other four columns (no KPI in name) are calculated columns with the following formula. Just change the “Cost KPI” to the correct column name for each (i.e. Time’s formula will be …(LEFT([Time KPI],1)…). All of the non-KPI calculated columns are number type.

You can copy and paste this from the GitHub embedded snippets in the first section.

Note: If you want to use images/icons, see bottom of post.

Modify your main list view so you ONLY see the KPI columns (displaying color names). Don’t forget to uncheck the “Title” column. We’re about to hide it from the new item form and won’t be using it.

Then, in your list settings –> Advanced settings, change “Allow management of content types” to “Yes” and click OK.

Then select your item content type.

Select “Title” and change it to hidden and OK.

Click to enlarge

Finally, so we have some “lights” to work with, go to your new list and add a “new item” with whatever initial statuses you wish.

Click to enlarge

Add a web part where you want the indicators

On your home page or dashboard, add a “Content Editor” web part and reference the stoplight.css script.

  1. Edit page
  2. Insert –> web part –> media and content –> content editor –> Add
  3. Edit web part
  4. Paste URL to stoplight.css (saved in your site assets earlier)
  5. Set chrome type to None and Apply

Insert an app part for Project Health.

Click to enlarge

“Save and keep editing” – our next step will navigate away from this page and you will lose changes unless you save now.

Edit the new “Project Health” web part you added

Edit the current view

Uncheck all of the KPI columns and check the other four (without KPI in the name). Arrange them as you wish, and add “Edit (link to edit item)” as first position. Click OK.

Edit page again, and edit the web part again. Set “Toolbar type” to No Toolbar

Set “Title” to whatever you want displayed above the stoplights on the dash/page, set dimensions to 100×300 pixels and set “Chrome type” to “Title only.”

Under “Miscellaneous” check the box for “Server Render.” Then click OK and save/publish the page. Once the page refreshes after save, you should see your stoplights.

Going forward, your users will simply click the “edit icon” next to the row of stoplights to update the status indicators.

Use images/icons instead of dots

If you’d prefer to use images/icons, you can alter the other calculated column formula included above to include an image URL in place of a dot as seen in the example below.

Copy and paste this script from the GitHub gists at the top of this post.

Use Microsoft Flow to automatically convert RTF files to DOC

I currently work in healthcare and have run into situations with users where some data files are exported from software solutions in .rtf or .txt format only. To improve the user experience once these files are dropped into SharePoint, we can convert any .rtf file automatically to .doc.


When RTF files are opened in the browser, the option to “Edit in browser” is grayed out since the file type isn’t compatible with that functionality.

Click to enlarge

Okay, but why .doc and not .docx?

Unfortunately, we can’t convert from RTF to DOCX without the use of Azure functions (thanks, Pieter Veenstra for that info). But if we can at least convert it to DOC for users, they’ll get the “Edit in Browser” option which will then prompt them to convert the file to DOCX in two clicks (Convert –> Edit). Then we finally have a .docx file.

Click to enlarge

How to auto-convert .rtf to .doc using Flow

Prepping the document library

First, since we don’t want anything to happen to files that aren’t .rtf, we’ll need to create a column in our list to display “extension.” Then we’ll use SharePoint Designer to populate the extension and Title fields whenever an item is added or changed. Flow can’t use file name fields, so we’ll set title to match name.

  1. Library settings –> Add column –> Single line of text (name it extension and save)
  2. Create a SharePoint Designer workflow (2010 or 2013 – doesn’t matter for this purpose) that triggers on creation or change
  3. Set extension to file type, and title to name

Publish the workflow. Now when a .rtf file is dropped into the library, it will set “rtf” in the extension column and set the blank Title field to the same as “Name” so that we can use it in Flow.

Create the flow (.rtf to .doc)

Trigger and condition

  1. Create a new flow with the trigger “When a file is created or modified (properties only)” and select (or enter) your site and library name.
  2. Create a condition step that checks if “extension” is equal to rtf

“If yes” box

Now we’ll create four steps in our “if yes” box. Configure each as pictured below, careful with file paths not to include the whole URL – just the relative path beginning something like /Shared Documents/…

  1. Get file content using path (gets contents of the .rtf file)
  2. Create file (creates new .doc file using the .rtf contents)
  3. Get file metadata using path (gets original .rtf file)
  4. Delete file (deletes original .rtf file to avoid confusion)

Expand the flow (optional – delete .doc if .docx created)

If no box (optional)

Users can now easily convert .doc to .docx in two clicks. But it leaves the original file (.doc) behind which can be confusing. So we can create steps in our Flow to delete the .doc file IF a .docx by the same name is created.

In the no box, we’re going to create another condition step to check if the extension equals .docx.

If yes, use a “Get file metadata using path” step to get any file by the same name from that library (use the “Title” dynamic content from the trigger step and add a .doc). Then in your “delete file” step, simply use the ID from the get metadata step.

Now when a user converts a .doc to a .docx file in the browser, your Flow will delete the .doc that’s left behind. Note that there will be a delay.

  1. SharePoint Designer has to wait until you’re out of the editor to reassign the “extension” field to .docx
  2. Flow has to wait for SharePoint Designer to make that change so that it triggers appropriately

While this is certainly not an ideal workaround, it may be the best you’re able to do with the resources on hand. Not everyone has Azure, or developers, premium add-ins/vendors or the budgets for such things. Best of luck!

Here’s a view of the full flow, highlighting which steps I’m pulling dynamic content from. Click to enlarge.

Click to enlarge