演習 - フィールド カスタマイザー拡張機能を作成する
この演習では、パーセンテージをバーで示す列に、フィールドの値に応じて色付きのバーを表示する SharePoint Framework (SPFx) フィールド カスタマイザー拡張機能を作成します。
前提条件
重要
ほとんどの場合、次のツールの最新バージョンをインストールすることをお勧めします。 ここに記載されているバージョンのリストは、このモジュールが発行され、最後にテストしたときに使用されたものです。
- Node.js - v16.*
- Gulp-cli - v2.3.*
- Yeoman - v4.3.*
- SharePoint 用 Yeoman ジェネレーター - v1.17.1
- Visual Studio Code
新しい SharePoint Framework プロジェクトを作成する
コマンド プロンプトを開き、現在のディレクトリを、プロジェクトを作成するフォルダーに変更します。
次のコマンドを実行して、SharePoint Yeoman ジェネレーターを起動します。
yo @microsoft/sharepoint
プロンプトが表示されたら、次の情報を使用して応答します (他にもオプションが表示された場合は、既定の回答をそのまま使用します):
- ソリューション名は何ですか?: SPFxFieldCustomizer
- どの種類のクライアント側コンポーネントを作成しますか?: 拡張機能
- どの種類のクライアント側拡張機能を作成しますか?: フィールド カスタマイザー
- フィールド カスタマイザー名は何ですか?: HelloFieldCustomizer
- どのテンプレートを使用しますか?: フレームワーク
プロジェクトに必要なフォルダーをプロビジョニングした後、ジェネレーターは npm install を自動的に実行することで、すべての依存関係パッケージをインストールします。 NPM がすべての依存関係のダウンロードを完了したら、Visual Studio Code でプロジェクト フォルダーを開きます。
SCSS スタイルを更新する
作成するフィールド カスタマイザーは、変更するセルに特定の色を適用します。 拡張機能をコーディングする前に、これらのカスタム スタイルを実装します。
./src/extensions/helloFieldCustomizer/HelloFieldCustomizerFieldCustomizer.module.scss ファイルを見つけて開きます。 ファイルのコンテンツを次のスタイルで置き換えます。
.HelloFieldCustomizer {
.cell {
display: 'inline-block';
}
.filledBackground {
background-color: #cccccc;
width: 100px;
}
}
フィールド カスタマイザーをコーディングする
./src/extensions/helloFieldCustomizer/HelloFieldCustomizerFieldCustomizer.ts ファイルを見つけて開きます。
IHelloFieldCustomizerFieldCustomizerProperties
インターフェイスを見つけ、そのプロパティを以下のコードに更新します。
greenMinLimit?: string;
yellowMinLimit?: string;
onRenderCell()
メソッドを見つけて、次のコードと一致するようにコンテンツを更新します。 このコードは、フィールド内の既存の値を見て、完了したパーセンテージの値に入力された値に基づき、対応する色付きのバーを構築します。
event.domElement.classList.add(styles.cell);
// determine color and text to use
const fieldValue = parseInt(event.fieldValue);
let filledColor: string = '';
if (isNaN(fieldValue) || fieldValue === 0) {
event.domElement.innerHTML = `
<div class="${styles.HelloFieldCustomizer}">
<div class="">
<div style="width: 100px; color:#000000;">
no progress
</div>
</div>
</div>
`;
} else {
if (fieldValue >= parseInt(this.properties.greenMinLimit)) {
filledColor = '#00ff00';
} else if (fieldValue >= parseInt(this.properties.yellowMinLimit)) {
filledColor = '#ffff00';
} else {
filledColor = '#ff0000';
}
event.domElement.innerHTML = `
<div class="${styles.HelloFieldCustomizer}">
<div class="${styles.filledBackground}">
<div style="width: ${fieldValue}px; background:${filledColor}; color:#000000;">
${fieldValue}% completed
</div>
</div>
</div>`;
}
テスト中に使用する SharePoint リストを作成する
ブラウザーで、フィールド カスタマイザーをテストする SharePoint Online の最新のサイト コレクションに移動します。
左側のナビゲーションで [ サイト コンテンツ ] リンクを選択し、ツール バーの [新しい > 一覧 ] を選択します。 [空のリスト] テンプレートを選択します。
リスト名を [作業状態] に設定し、[作成] を選択します。
一覧が読み込まれたら、[ 列 > 番号の追加] を選択して新しい列を作成します。
[列の作成] パネルで、名前を PercentComplete に設定し、[保存] を選択します。
次の図のように、いくつかのアイテムを追加します。
テストと展開の構成の更新
本番環境に実装された場合、フィールド カスタマイザーは、フィールド カスタマイザーのバンドル ファイルで定義されたカスタム スクリプトに関連付けられているレンダリングを行う新しいサイト列を作成することで実装されます。
./sharepoint/assets/elements.xml ファイルを見つけて開きます。
<Field>
要素に以下のプロパティを追加し、フィールド カスタマイザーのパブリック プロパティの値を設定します。
ClientSideComponentProperties="{"greenMinLimit":"85","yellowMinLimit":"70"}"
./config/serve.json ファイルを見つけて開きます。
作成したリストの完全な URL (AllItems.aspx を含む) をserveConfigurations.default.pageUrl
プロパティにコピーします。
serveConfigurations.default.properties
オブジェクトを見つけます。
serveConfigurations.default.fieldCustomizers.InternalFieldName
プロパティの名前を serveConfigurations.default.fieldCustomizers.PercentComplete
に変更します。 このプロパティは、どの既存のフィールドにフィールド カスタマイザーを関連付けるかを SharePoint Framework に伝達します。
properties
オブジェクトの値を次の JSON に変更します。
"properties": {
"greenMinLimit": "85",
"yellowMinLimit": "70"
}
注:
id
プロパティの値を変更する必要はありません。
既定のサービス構成の JSON は、以下のコードのようになっています。
"default": {
"pageUrl": "https://contoso.sharepoint.com/sites/mySite/Lists/Work%20Status/AllItems.aspx",
"fieldCustomizers": {
"PercentComplete": {
"id": "6a1b8997-00d5-4bc7-a472-41d6ac27cd83",
"properties": {
"greenMinLimit": "85",
"yellowMinLimit": "70"
}
}
}
}
フィールド カスタマイザーをテストする
次のコマンドを実行して、プロジェクトを起動します。
gulp serve
メッセージが表示されたら、[デバッグ スクリプトの読み込み] ボタンを選択します。
ページが読み込まれたら、フィールド カスタマイザー内のコードに応じてレンダリングがどのように変化したかに気が付きます。 PercentComplete フィールドの値がレンダリングされない場合は、コマンド プロンプトに戻り、リロード サブタスクの実行が完了するのを待ち、更新します。
ローカル Web サーバーを停止するには、コマンド プロンプトで CTRL+C を押します。
概要
このエクササイズでは、フィールドの値に応じて、パーセンテージをバーで示す列に色付きのバーを表示する SharePoint Framework (SPFx) フィールド カスタマイザー拡張機能を作成します。
自分の知識をテストする
ヘルプが必要ですか? Microsoft のトラブルシューティング ガイドをご覧になるか、問題を報告して具体的なフィードバックをお送りください。