Skip to content

Delete custom SharePoint site scripts

Author: Laura Kokkarinen

Site designs and especially site scripts can be something that ends up just hanging around in your tenant for a long time even though you no longer need them for anything. Use the scripts below to get rid of them. You might also find some site scripts that are not linked to any site design and hence never get executed!

$sparksjoy = "Project Site", "Issues List"
$siteScripts = o365 spo sitescript list -o json | ConvertFrom-Json
$siteScripts = $siteScripts | where {  -not ($sparksjoy -contains $_.Title)}
if ($siteScripts.Count -eq 0) { break }
$siteScripts | Format-Table Title, SiteScriptIds, Description
Read-Host -Prompt "Press Enter to start deleting (CTRL + C to exit)"
$progress = 0
$total = $siteScripts.Count
foreach ($siteScript in $siteScripts)
{
  $progress++
  Write-Host $progress / $total":" $siteScript.Title
  o365 spo sitescript remove -i $siteScript.Id --confirm
}
#!/bin/bash

# requires jq: https://stedolan.github.io/jq/

sparksjoy=("Project Site"  "Issues List")
sitesscriptstoremove=()
while read script; do
 scriptTitle=$(echo ${script} | jq -r '.Title')
  exists=true
  for keep in "${sparksjoy[@]}"; do
    if [ "$keep" == "$scriptTitle" ] ; then
      exists=false
      break
    fi
  done
  if [ "$exists" = true ]; then
    echo $scriptTitle
    sitesscriptstoremove+=("$script")
  fi

done < <(o365 spo sitescript list -o json | jq -c '.[]')

if [ ${#sitesscriptstoremove[@]} = 0 ]; then
  exit 1
fi

echo "Press Enter to start deleting (CTRL + C to exit)"
read foo

for script in "${sitesscriptstoremove[@]}"; do
  scriptTitle=$(echo ${script} | jq -r '.Title')
  scriptId=$(echo ${script} | jq -r '.Id')
  echo "Deleting Site script..."  $scriptTitle
  o365 spo sitescript remove --id $scriptId --confirm
done

Keywords:

  • SharePoint Online
  • Site Scripts