SharePoint Online では、Office 365 グループに接続されたチーム サイトや、今年登場したコミュニケーション サイトなど、「モダン サイト」と呼ばれる新しい SharePoint のサイトがあります。(従来のサイトは「クラシック サイト」と呼ばれるようになりました)このモダン サイトを利用する場合でも、やはりサイトの色使いとして企業のブランド カラーを反映させたいななどと思われる方もいるかと思います。

こうしたテーマ(色合い)は、モダン サイトにアクセスした状態で「歯車アイコン」をクリックすると、「外観の変更」へアクセスでき、あらかじめ定義されたテーマを選択することができます。

今回はここに独自に定義したテーマを追加してみたいと思います。

Theme Generator

クラシック サイトでは、テーマの作成は SharePoint Color Palette Tool を利用することができましたが、モダン サイトでは「Theme Generator」というテーマ作成を行うサイトが用意されています。

Theme Generator
http://aka.ms/spthemebuilder

このサイトでは、「Primary theme color(メインとなる色)」「Body text color(文字の色)」「Body background color(背景の色)」の 3 色を選択すると、選んだ色に合わせてテーマに必要な要素を自動的に決めてくれます。

設定には PowerShell がお手軽

テーマを作成すると、Output として JSON や SASS や PowerShell と、それぞれに合わせた文字列が出力されます。これらを GUI を利用して設定する方法が残念ながら用意されていないため、設定するには REST API や PowerShell(SharePoint Online Management Shell)を利用するわけですが、PowerShell を利用するのがお手軽かと思います。

ここで利用するコマンドレットが Add-SPOTheme ですが、新しく追加されたコマンドレットですので SharePoint Online Management Shell も新しいものに入れ替えておく必要があります。(バージョン 16.0.6906.1200 以降)

実行する PowerShell のサンプルは下記です。Theme Generator で作成された PowerShell の @{…} の内容を 15 行目からの部分と置き換えます。あとは、$tenantName$themeName の値を環境に合わせて書き換えます。.ps1 ファイルとして保存後に SharePoint Online Management Shell から実行します。実行すると管理者の資格情報が求められますので入力します、問題なければ何も表示されずに終わるはずです。

$tenantName = "contoso"
$themeName = "Company Color"
Connect-SPOService -Url https://$tenantName-admin.sharepoint.com

function HashToDictionary {
  Param ([Hashtable]$ht)
  $dictionary = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
  foreach ($entry in $ht.GetEnumerator()) {
    $dictionary.Add($entry.Name, $entry.Value)
  }
  return $dictionary
}

$themepallette = HashToDictionary(
  @{
  "themePrimary" = "#250955";
  "themeLighterAlt" = "#e1d2fa";
  "themeLighter" = "#c5a9f6";
  "themeLight" = "#a97ff1";
  "themeTertiary" = "#8d56ec";
  "themeSecondary" = "#712de8";
  "themeDarkAlt" = "#5b17d0";
  "themeDark" = "#4912a7";
  "themeDarker" = "#370e7d";
  "neutralLighterAlt" = "#eeeeee";
  "neutralLighter" = "#eaeaea";
  "neutralLight" = "#e1e1e1";
  "neutralQuaternaryAlt" = "#d1d1d1";
  "neutralQuaternary" = "#c8c8c8";
  "neutralTertiaryAlt" = "#c0c0c0";
  "neutralTertiary" = "#d6d6d6";
  "neutralSecondary" = "#474747";
  "neutralPrimaryAlt" = "#2e2e2e";
  "neutralPrimary" = "#333333";
  "neutralDark" = "#242424";
  "black" = "#1c1c1c";
  "white" = "#f5f4f4";
  "primaryBackground" = "#f5f4f4";
  "primaryText" = "#333333";
  "bodyBackground" = "#f5f4f4";
  "bodyText" = "#333333";
  "disabledBackground" = "#eaeaea";
  "disabledText" = "#c0c0c0";
  }
)

# テーマを追加
Add-SPOTheme -Name $themeName -Palette $themepallette -IsInverted $false

# テーマを上書き
# Add-SPOTheme -Name $themeName -Palette $themepallette -IsInverted $false -Overwrite

# テーマを削除
# Remove-SPOTheme -Name $themeName

Disconnect-SPOService

実行したのち、再びモダン サイトにアクセスして外観の変更へアクセスすると、新たに追加したテーマが一番下に表示され選択可能になっているかと思います。選択すると瞬時に適用されプレビューできますので、問題ないようでしたら「保存」して完了です。

この PowerShell についての公式のリファレンスは下記のページになります。

SharePoint site theming: PowerShell cmdlets
https://docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/site-theming/sharepoint-site-theming-powershell

このページでは、既定で表示されているテーマを隠す方法なども紹介されていますので、合わせてご確認ください。

さいごに

こうしたサイトのテーマですが、企業のブランド カラーに変更できるほか、サイトの目的ごとなどで色を変更するといった使い方もありますね。こうした色の変更はユーザーから見てもわかりやすい変更ですので、ぜひ一度試していただければと思います。