技術情報ブログ
SharePoint
2023.10.18

SharePoint:新着からX日間書式設定を変更する方法

SharePoint:新着からX日間書式設定を変更する方法
小刀稱知哉

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

社内のグループウェアを作成する際、SharePointはよく使われるツールの1つだと思います。

弊社でも、SharePointを用いたグループウェアの構築を数多く対応しております。

また、最近はX-SP | SharePoint デザイン・機能拡張サービスを立ち上げました。
本サービスでは、標準機能では対応できない幅広いデザイン指定(例:サイトのテーマカラーを越えた色指定)機能の拡張(例:タブ機能やポップアップ機能など)などが容易に対応可能となっています。

SharePointのデザイン性や機能性を拡張したいと思っている方は、ぜひ弊社までお問い合わせください!

少し前置きが長くなってしまいました(笑)

今回はSharePointのJSONに関する小ネタを1つ紹介させていただきます。

SharePointを構築する際によく伺う内容の1つとして、SharePointリストやドキュメントライブラリにおいて、
新着(=レコードが作成された日)からX日間書式設定を変更したいという要望がございます。

実は「新着当日だけ書式設定を変更する」ことについては、SharePointの標準機能から設定可能ですが、
「新着からX日間書式設定を変更する」ことについては、設定することができません。

そこで、今回はJSONを使った書式設定を活用することで、上記設定を行います。
JSONの書式設定については、以下URLをご参照ください。

書式構文リファレンス

やりたいこと

はじめに、本ブログのゴールについて紹介します。

今回はSharePointリストを用いています。
リストの列名とデータ型については以下のとおりです。

内部列名 外部列名 データ型
Subject 件名 1行テキスト
PublishDatetime 公開時間 日付と時間(時間を含めるが「はい」)

リストの内部列名や外部列名については、以下ブログもご参照ください。

今回は公開時間から3日間書式設定を変更するという内容がゴールになります。

やりたいこと
やりたいこと
公開時間から3日間書式設定を変更する(SharePoint)
公開時間から3日間書式設定を変更する(SharePoint)

※上記スクリーンショットを取得した時刻:2023/06/12 11:02(JST)

また「公開時間」と「登録日時」・「更新日時」は同じデータ型ですので、
「登録日時(または更新日時)からX日間書式設定を変更する」場合は、適宜読み替えてください。

※「登録日時」や「更新日時」はSharePointリスト作成時、システム側で自動的に作成される列です。

※登録日時と更新日時の内部列名は、それぞれ以下です。

  • 登録日時:Created
  • 更新日時:Modified

補足:当日のみ書式設定を変えたい場合は?

補足事項として、標準で対応可能な「当日のみ書式設定を変更する」方法について紹介します
こちらは、ビューの書式設定の条件付き書式から対応可能です。

手順としては、以下のとおりです。

  1. SharePointリスト画面 → ビューの選択項目をクリック → 現在のビューの書式設定をクリックします。
  2. 現在のビューの書式設定
    現在のビューの書式設定

  3. 条件付き書式のルールを管理をクリック ルールを管理
    ルールを管理
  4. すべての値を表示するの横にある3点リーダー→ルールの編集をクリック ルールの編集
    ルールの編集
  5. IFの項目に以下を設定 ルールの編集(IF)
    ルールの編集(IF)
  6. リストアイテムを表示項目に任意の値を設定 リストアイテムを表示
    リストアイテムを表示

標準機能の「ルールの編集」では、相対日付としては「今日(相対)」しか設定することができません。
(想定日付として「X日前」を設定することができない。)

当日のみ書式設定を変えたい場合は上記設定で問題ありませんが、
上記範囲を越えて変更したい場合は、JSONを用いて直接書式設定を変更することで対応します。

実装方法

それでは実装方法について紹介します。

、、、と言いつつ、いきなりゴールとなるJSONを以下に示します(笑)

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/row-formatting.schema.json",
  "additionalRowClass": "=if(Date(toLocaleDateString(addDays(@now,-3))) < Date(toLocaleDateString([$PublishDatetime])) && ([$PublishDatetime] <= @now),'ms-bgColor-sharedRed10 sp-css-color-WhiteText', '')"
}

上記の書式設定を、SharePointの「ビューの書式設定」にコピー&ペーストしてください。

手順としては、以下のとおりです。

  1. SharePointリスト画面 → ビューの選択項目をクリック → 現在のビューの書式設定 をクリックします。
  2. 詳細モードをクリック
  3. JSONを記載する項目に、上記内容をコピー&ペースト
  4. JSONの書式設定
    JSONの書式設定

設定としては、上記で完了です。

以下では今回指定したJSONの書式設定について、詳細を説明していきます。

書式設定の詳細

上記のJSONについて、改行やコメントを入れて見やすくしてみました。

if(
  // 本日-3日前 < 公開日 && 公開時刻 <= 現在時刻の場合
  Date(toLocaleDateString(addDays(@now,-3))) < Date(toLocaleDateString([$PublishDatetime]))
  && ([$PublishDatetime] <= @now),

  // 範囲内の場合は、背景色と文字色を変更
  'ms-bgColor-sharedRed10 sp-css-color-WhiteText',

  // 範囲外の場合は、何もしない
  ''
)

ロジックはとても単純であり、「PublishDatetime(=公開時間の内部列名)」が現在から3日以内の場合は、背景色と文字色を変更します。

ちなみに、書式設定で指定した項目とその内容は以下のとおりです

  • ms-bgColor-sharedRed10:背景を赤色にする
  • sp-css-color-WhiteText:文字色を白色にする

※書式については、以下URLから任意の値を選択することができます。

SharePoint Online CSS Classes

条件部分の詳細

条件部分について、詳細に見ていきましょう。

// 本日-3日前 < 公開日 && 公開時刻 <= 現在時刻の場合
Date(toLocaleDateString(addDays(@now,-3))) < Date(toLocaleDateString([$PublishDatetime]))
&& ([$PublishDatetime] <= @now)

はじめに以下部分について、説明します。

Date(toLocaleDateString(addDays(@now,-3)))

ロジックとしては、以下です。

  1. addDays(@now,-3):現在時刻から3日前を取得する
  2. toLocaleDateString():上記手順で得た値に対して、日付部分だけ文字列型として取得する
  3. Date():上記手順で得た値に対して、日付型として取得する

現在時刻(@now)は、日付と時刻の情報を含んでいます。(例:2023/06/12 14:12)

上記部分から日付のみ取得するため、toLocaleDateString()関数を用いています。
(例:2023/06/12 14:12 → 2023/06/12)

ただし、toLocaleDateString()関数を用いると、出力結果としては文字列となってしまいます。
これではif文の中で、値を比較することができません。

よって、Date()関数を用いることにより比較できるようにしています。
(例:2023/06/12 → 2023/06/12 00:00)

Date(toLocaleDateString([$PublishDatetime]))

上記部分については、前述した内容と同じですので、詳細は割愛します。

ポイントとしては、SharePointの内部列名を用いることです。
JSONで書式設定を行う場合には、必ず内部列名を記載するようにしてください。

おわりに

いかがでしょうか?

今回は小ネタとして、SharePointのJSONを用いて「公開時間から3日間書式設定を変更する」という内容について紹介しました。

JSONを使いこなすことができるとSharePointの表現の幅が拡がるので、ぜひ覚えていただきたい内容です。

(実は、X-SP | SharePoint デザイン・機能拡張サービスもJSONを活用することで実装していたりします(笑))

小刀稱知哉

最後まで読んでいただき、ありがとうございました!

弊社ではお客様の業務を効率化するご支援を数多く承っております。
普段の業務の中で、「〇〇をもっと効率化できないか」というような疑問がある場合には、お気軽にアーティサン株式会社までお問い合わせください。

Microsoft Cloud Advisory Subscription

製品・サービスに関するお問い合わせ(Microsoftクラウド全般)

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

大分県出身(温泉大好き)、現在は東京都在住

1990年生まれ

30才でメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書

主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!

(最近はCopilot Studioについても勉強中)

持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200/SC-100

シェアする
記事カテゴリ
最新記事
2025.04.30

Power Apps, Power Automate で作る NFC タグを活用したアプリ例

2025.04.16

Power Apps で NFC タグを使ってみる

2025.04.02

Copilot Studioで作成したコパイロットをTeams に追加する方法

2025.03.19

SharePoint リストで主キーを実装し、比較してみた

2025.03.12

SharePointのデザインをもっとおしゃれに!(X-SP Design | SharePoint デザイン拡張サービスのご紹介)(4) サンプルの紹介その2

データ構造.Net Core Test Explorerレスポンシブ技術カスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列X-SPNFCタグモデル駆動型アプリSortByColumns関数Dataverse for Teams入門ItcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StylePowerAutomatePower AppsTypeScriptitem関数初心者情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者StudioPower PlatformHTMLGoogle Maps中級者メッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日AISharePointEF CoreMarker Clustererキャンバスアプリメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更生成系AIExcelマイグレーションRANK()関数DatePickerfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBCopilotPower AutomateFramework CoreDynamics 365 SalesDropdownnest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携licenseC#Attribute directivesMicrosoft Translatorview入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続添付ファイルコントロールattributeO/Rマッパーマーカークラスタリングライブラリビュー動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローファイルサイズvalidationazure sql databasetailwindcssアクセス制限collectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binフルリモートワークローコードCase式マルチテナント承認コレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールごみ箱アーティサンAngularHTTP Requestドロップダウンメニューリマインド複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseアクセス許可ArtisanAccessCSSBreakpointObserverSet承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSharePoint Framework転職InfoPathxUnitメディアクエリForAllform差出人アプリdesignconcat関数ファイル勉強表示SPFx主キーMatTable.Net Core 3.1スマホUpdateContextエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替サンプルCopilot StudioAngular MaterialVSCodePCロードマップインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者samplePowerApps
PageTop
ページトップに戻る