ブログ

2025/01/29
【プリザンター】 第283回)サーバスクリプトで選択肢の表示名を取得できるか?

サーバスクリプトで選択肢の表示名を取得したい

こんにちは、シーイーシーカスタマサービスの森山です。

年間サポートをご契約いただいてるお客様より、こんなお問合せをいただきました。

分類項目に直接、選択肢を設定しています。(100,社員、200,派遣、300,パート)
サーバスクリプトのmodelを使うと、分類から値(100)を取得することはできますが、同じように表示名(社員)を取得するにはどうしたらいいのでしょうか?

他テーブルとリンクして選択肢を表示している場合であれば、items.Get等を使ってリンク先テーブルのタイトルを取得することで、表示名を取得することができます。
しかし、お問合せの場合は分類項目の選択肢一覧に直接「値,表示名」という形で設定されています。
この場合、データベースには表示名ではなく値が格納されるため、サーバースクリプトによる表示名の取得はできません。

では、本当にサーバスクリプトで表示名を取得することはできないのでしょうか?
結論から言えば、一手間加えることでサーバスクリプトでも表示名を取得することができます。

今回はサーバスクリプトによる表示名取得方法をご紹介します。

配列を使って値と表示名を紐づけ

サンプルとして「記録テーブル」を用意します。用意したテーブルでは 分類A を有効化し、選択肢一覧に下記を設定します。

■分類A:選択肢一覧
100,社員
200,派遣
300,パート

次に、サーバスクリプトを設定します。今回はサンプルのため、コンソールへのログ出力のみを行います。
ここで重要なのが、「分類Aに設定した選択肢」と「配列に記載する内容」を一致させることです。
選択肢と配列の内容が異なる場合、値は一致しても表示名が一致しませんのでご注意ください。

■サーバスクリプト:条件=画面表示の前

// サイトID
const SiteId = 12345;

// ClassAの選択肢一覧を配列に格納
// 各オブジェクトは "value" に対応する数値と "displayName" に表示名を持つ
const classAOptions = [
{ value: 100, displayName: "社員" },
{ value: 200, displayName: "派遣" },
{ value: 300, displayName: "パート" }
];

// items.Getメソッドを使用してデータを取得
let results = items.Get(SiteId, JSON.stringify({}));

// 取得したデータを1件ずつ処理
for (let item of results) {
// ClassAの値(item.ClassA)に一致する選択肢を配列から検索
// Number(item.ClassA) で item.ClassA を数値型に変換して比較
let matchingOption = classAOptions.find(option => option.value === Number(item.ClassA));

// 一致する選択肢が見つかった場合はその表示名を使用
// 見つからない場合は "不明な値" を使用
let displayName = matchingOption ? matchingOption.displayName : "不明な値";

// レコードID、タイトル、ClassAの表示名をログに出力
context.Log(`${item.ResultId} ${item.Title} ${displayName}`);
}
設定が完了したら、一覧画面を開きコンソールの表示をご確認ください。

まとめ

いかがでしたか?

ご紹介した内容を使うと、設定している選択肢の表示名だけではなく、値に応じて別の文字列を紐づけることも可能です。
サーバスクリプトで表示名が取得できずに諦めた処理がある方は、今回の内容を是非お試しください。

弊社ではプリザンターをご使用中、または、これからご使用になられる方向けに、運用ノウハウ集、プリザンター逆引き辞典、スタイル・スクリプトサンプル集の販売を行っております。
また、 プリザンターからのExcel帳票出力・PDF帳票出力の支援パック販売 も行っております。
プリザンター導入の支援や、スクリプト開発などの支援も行っておりますので、まずは気軽にご相談ください。
※ご相談の内容によっては有料となる場合がございます。予めご了承ください。
☆☆☆
ブログ内容への質問や追加説明をご希望の方は【 問い合わせフォーム 】からお気軽にお問い合わせください
☆☆☆

お問い合わせ
PAGE TOP