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.

Start Workflow on Inbound Email

By default, workflows will not auto start for attachments sent to a library via email.

To enable this functionality, run the following PowerShell script on your SharePoint server.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

$spWebService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$spWebService.DeclarativeWorkflowAutoStartOnEmailEnabled = $true

Next, make sure your workflow is configured to start automatically when an item is created.

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)