Workflow to Update Hyperlink Display Text


I wanted to use Quick Edit to update the URL column for a bunch of items in a list. The problem is that when you edit a hyperlink column, you have to click the little hyperlink editor icon next to the cell to also edit the display text. Otherwise, it just shows up as the URL.


Use a workflow to change the display text to something else.

1. First, create a new text column or use an existing text column
2. Open SharePoint Designer
3. Create a new List Workflow
4. Add Update List Item action
5. Click “Add…”

6. Scroll through and find your new column. In this example I used the existing Description column.

7. Click “…” to open the String Builder

8. Click “Add or Change Lookup”
9. Select the hyperlink column
10. Change “Return field as:” to URL

11. Click “OK”
12. IMPORTANT: Add a comma and a space.
13. Click “Add or Change Lookup” again to select a column, or type out what you want your display text to be. I am setting mine to be the Title of the item.
14. Click “OK” > “OK” > “OK”
15. Add another Update List Item action
16. Click “Add…”
17. Set the hyperlink column to the value of the column we updated in the previous step

18. Click “OK” > “OK”
19. Change the Start Options to “Start workflow automatically when an item is changed”
20. Publish

Now you can Quick Edit a bunch of URLs without having to manually change the display text.

Link To New Item Form

Give users the ability to add items to a list without showing the entire list web part. In my example, I’ve added a “Submit Request” button to a Document Set Welcome Page. Clicking this will open the New Item form for my Tickets list.


<script type="text/javascript">

 function displayLayover(url) {

 var options = SP.UI.$create_DialogOptions();

 options.url = url;

 options.dialogReturnValueCallback = Function.createDelegate(

 null, null);




<input type="button" onclick='javascript:displayLayover("/sites/sandbox/mustard/Lists/Tickets/NewForm.aspx")' value="Submit Request">


1. Add a Script Editor web part to your page.


3. Replace the URL in this line with the path to your list’s New Item form (you can also change what the button says by changing the ‘value’):

<input type="button" onclick='javascript:displayLayover("/sites/sandbox/mustard/Lists/Tickets/NewForm.aspx")' value="Submit Request">

NOTE: If your URL looks something like this: /sites/sandbox/mustard/_layouts/15/start.aspx#/Lists/Tickets/NewForm.aspx, remove /_layouts/15/start.aspx# from the path.


4. Click Insert and save the page.

5. To test, click the new “Submit Request” button.


6. Add some information and click Save.

7. Navigate to the list to confirm.


Update List/Library Columns With External Content Type Columns


You have a column on a custom list or library that needs to be back-filled with data from an External Content Type (ECT).


Create a list from the ECT and use PowerShell to update your custom list’s column with the ECT’s list column.

Creating a list (assuming you already connected an ECT):

Open SharePoint Designer 2013 and navigate to your External Content Types. Click on the ECT you need data from and click “Create List & Form”.

Name the list whatever you want and click OK.

The list will be created in the site or subsite you’re connected to in SharePoint Designer.

Updating Custom List With ECT List Column:

My example shows how to match Customer names in an ECT with corresponding Folders in a document library to update the Status column.  If you need to update every item in a list, comment out line 78, un-comment lines 72 and 81, then remove the query.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Get the context - top level site collection
$ctx = Get-SPServiceContext http://sp2013

#Get the scope
$scope = new-object Microsoft.SharePoint.SPServiceContextScope $ctx

#Get the target site collection
$webTarget = Get-SPWeb -identity "http://sp2013/sites/customer"

#Get the ECT List
$list = $webTarget.Lists["Entity List"]

#Array to Hold Result - PSObjects
$ListItemCollection = @()

#Get All List items. Replace -name "Name" with the column name on the ECT list.
#Add more columns if required
$list.Items | foreach {
$ExportItem = New-Object PSObject
$ExportItem | Add-Member -MemberType NoteProperty -name "Entity" -value $_["Entity"]
$ExportItem | Add-Member -MemberType NoteProperty -name "Status" -value $_["Status"]

#Add the object with property to an Array
$ListItemCollection += $ExportItem

#Export the result Array to CSV file
$ListItemCollection | Export-CSV "E:\SharePoint\EntityStatus.csv" -NoTypeInformation

#Dispose the web Object

#Pause for 10 seconds for the CSV file to populate all the way.
Start-Sleep 10

function Update-SPList()
#Import to destination list
#This section of the PowerShell will loop through the csv file we created and update the Status column in our Customer Folders library.
$csvVariable= Import-CSV -path "E:\SharePoint\EntityStatus.csv"

# Destination site collection. You can use any site, it does not have to be in the same collection as ECT list.
$WebURL = "http://sp2013/sites/customer"

# Destination list name
$listName = "Customer Folders"

#Get the SPWeb object and save it to a variable
$webDestination = Get-SPWeb -identity $WebURL

#Query ONLY folders.
$query = New-Object Microsoft.SharePoint.SPQuery;
$query.Query =
" <Where>

<FieldRef Name='FSObjType' />
<Value Type='Integer'>1</Value>


$list = $webDestination.Lists[$listName]

#If you want to update all items, remove the query and uncomment the following line
#$items = $list.Items

#loop through csv file
foreach($row in $csvVariable)
#Updating queried items
$updateitem = $list.GetItems($query) | Where {$_["Title"] -eq $row.Entity}

#Updating all items
#$updateitem = $items | Where {$_["Title"] -eq $row.Entity}

#loop through SharePoint list
Write-Host $row.Entity

$updateitem["Status"] = $row.Status

if ($webDestination)

Update All List Items Using PowerShell


You added a new column and need to update that column for every item in a list or library.


Here is an example PowerShell script that can be used to update one or more columns for every single item in a list.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

function UpdateColumn()
#URL where the list or library lives
$WebURL = "http://sp2013/subsite"

#name of that list or library
$listName = "Documents"

#get the SPWeb object and save it to a variable
$webDestination = Get-SPWeb -identity $WebURL
$list = $webDestination.Lists[$listName]

#array of all items
$items = $list.Items

foreach ($item in $items)
Write-Output $item["FileLeafRef"]

#change "Column" to internal name of your column
#change "Something" to the information you're updating that column with
$item["Column"] = "Something"

if ($webDestination)


Remember: change $WebURL to the URL of the site or subsite where the list or library lives, change “Column” in $item[“Column”] to your column’s internal name, and change “Something” to whatever information you want to update that column with.