応用編:スクリプト、サーバスクリプト、スタイル、拡張機能
## 概要
プリザンターはノーコード開発ツールとして簡単な操作で業務アプリをすばやく作成できます。
またローコード開発ツールとして[スクリプト](/ja/manual/table-management-script)、[サーバスクリプト](/ja/manual/table-management-server-script)、[API](/ja/manual/api)、[拡張SQL](/ja/manual/extended-sql)など豊富な[開発者向け機能](/ja/manual/dev)を用意しているので、標準機能だけでは実現が難しい複雑な業務要件にも対応できます。
ここでは開発者向け機能の概要を紹介します。
## API
プリザンターが提供する[API](/ja/manual/api)はサイトおよびレコードの登録・参照・更新・削除の基本操作の他、メール送信や任意のSQLを実行する機能があります。
APIを使用することで、他システムとのデータ連携を行うことができます。
プリザンターのAPIはWEB APIですので、外部システムからのAPI操作だけでなく、PowershellやPythonなどのスクリプト言語によるバッチ処理などで利用できます。
また後述の[スクリプト](/ja/manual/table-management-script)ではプリザンター内のテーブルからのデータ取得、登録更新削除などのビジネスロジックの作成に利用できます。
## スクリプト
クライアントサイドでJavascriptを実行し、標準機能では実現できないUI操作やUI操作に伴った追加処理を行うことができます。実装はプレーンなJavascriptに加え、jQueryが利用可能です。レコードIDの取得、画面項目の値取得の関数や、一覧画面表示時、編集画面更新前に動作する関数の他、プリザンターAPI実行関数などスクリプト専用関数を豊富に準備しているので、標準機能で実現できない追加処理を素早く高品質で実装することができます。また外部ライブラリを導入することで、グラフ表示やピボットテーブルなど様々な機能をプリザンター上で利用することができます。
## サーバスクリプト
サーバサイドでJavascriptを実行し、条件分岐、計算、文字列処理、レコードの操作、メールやチャットへの通知、動的なアクセス制御等を行うことが可能です。実装はプレーンなJavascriptが利用できます。データ取得、他テーブルレコード取得の他、画面設定情報の取得・更新、ビュー情報の設定などサーバスクリプト専用のメソッド、プロパティを豊富に準備しているので、標準機能で実現できない追加処理を素早く高品質で実装することができます。
## スクリプトとサーバスクリプトの違い
スクリプトとサーバスクリプトの大きな違いは、動作場所になります。その他の違いについては下記の通りです。
|内容|スクリプト|サーバスクリプト|
|:---|:---|:---|
|動作場所|クライアントサイド|サーバサイド|
|動作トリガ|画面上の操作(画面表示、ボタン押下、値変更等)。それぞれの操作に対する処理を実装する|サーバ側での処理タイミング(画面表示の前、作成後等)。詳細は「サーバスクリプト:条件」で定義。|
|外部API呼び出し|可能。$.ajaxなどで実装。プリザンターAPIの場合は専用スクリプト($p.api〇〇)あり。|可能。専用メソッドあり([httpClient](/ja/manual/server-script-http-client))|
|外部ライブラリ読み込み|可能|不可能|
## スタイル
一覧画面で1行毎に背景色を変える、指定した列の背景色を変える、編集画面で指定した項目の文字を強調する、ボタンのフォントサイズを大きくするなど、標準と異なるデザインを指定することができます。スタイルはCSS(Cascading Style Sheets)で記述します。一覧画面や編集画面の項目の設定でCSSを設定できるほか、スクリプトやサーバスクリプトで様々な処理と組み合わせてCSSを設定することができます。
## 拡張機能
[スクリプト](/ja/manual/table-management-script)、[サーバスクリプト](/ja/manual/table-management-server-script)、[API](/ja/manual/api)、[スタイル](/ja/manual/table-management-style)の他に更なる拡張機能を用意しています。
### 拡張HTML
ログイン画面入力フォームの上部などに自由にHTMLを差し込むことが可能です。スクリプトの実装をせずに個別の説明文を差し込むことができます。
### 拡張SQL
レコードの作成前、更新後などのデータ反映時のタイミングで任意のSQLを追加実行することができます。この機能を利用することでレコードの新規作成のタイミングで別テーブルのレコードを更新などの追加処理が実現できます。リンクサーバ(SQL Server)やDBリンク(PostgreSQL)機能を利用することで、別システムのデータベースに対してSQLの実行を行うこともできます。拡張SQLのもう一つの機能として一覧画面・編集画面に表示するレコードを限定するためのWhere句を設定することができます。この機能を利用することでレコードのアクセス制御を利用しなくてもより細かい条件でレコード単位のアクセス制御を実現することができます。また拡張SQLはAPIから実行することができます。スクリプト、サーバスクリプトからAPIを実行することで、データベースから直接データを取得したり更新する処理を実装することができます。
### 拡張スクリプト、拡張サーバスクリプト、拡張スタイル
スクリプト、サーバスクリプト、スタイルは[テーブルの管理](/ja/manual/table-management)にてテーブル単位での設定を行いますが、プリザンター全体で利用するようなケースにおいてはこちらの機能で一括管理することができます。
### 拡張ナビゲーションメニュー
ナビゲーションメニューの表示内容はパラメータファイル「NavigationMenu.json」にて既定値として設定済みです。この機能を利用することで、ナビゲーションメニューの追加・置換・削除を細かく指定することができます。
### 拡張フィールド
テーブルに存在しない項目を一覧画面のフィルタに追加することができます。この機能を利用することで、検索条件を任意に拡張することができます。
### 拡張項目
組織の管理、グループの管理、ユーザの管理に[分類項目](/ja/manual/table-management-class)や[数値項目](/ja/manual/table-management-num)などの項目を追加することができます。
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/table-management">テーブルの管理</a><span>2024/05/24 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-class">テーブルの管理:項目:分類</a><span>2023/04/21 up</span></li>
<li><a href="/ja/manual/table-management-num">テーブルの管理:項目:数値</a><span>2023/04/21 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-style">テーブルの管理:スタイル</a><span>2024/12/10 up</span></li>
<li><a href="/ja/manual/table-management-script">テーブルの管理:スクリプト</a><span>2024/10/08 up</span></li>
<li><a href="/ja/manual/table-management-server-script">テーブルの管理:サーバスクリプト</a><span>2024/10/08 up</span></li></ul></article>
<ul><li><a href="/ja/manual/dev">開発者向け機能</a><span>2023/05/18 up</span></li></ul></article>
<ul><li><a href="/ja/manual/api">開発者向け機能:API</a><span>2023/08/16 up</span></li></ul></article>
<ul><li><a href="/ja/manual/server-script">開発者向け機能:サーバスクリプト</a><span>2023/06/01 up</span></li>
<li><a href="/ja/manual/server-script-http-client">開発者向け機能:サーバスクリプト:httpClient</a><span>2024/12/13 up</span></li></ul></article>
<ul><li><a href="/ja/manual/style">開発者向け機能:スタイル</a><span>2023/05/18 up</span></li></ul></article>
<ul><li><a href="/ja/manual/extended-sql">開発者向け機能:拡張機能:拡張SQL</a><span>2024/09/13 up</span></li>
<li><a href="/ja/manual/extended-sql-api">開発者向け機能:拡張機能:拡張SQL:APIから拡張SQLを実行する</a><span>2024/09/13 up</span></li></ul></article>
<ul><li><a href="/ja/manual/faq-api-paging">FAQ:API で 200 レコードを超えるデータを取得したい</a><span>2024/04/29 up</span></li>
<li><a href="/ja/manual/faq-api">FAQ:API実行でエラーになる</a><span>2024/04/29 up</span></li>
<li><a href="/ja/manual/faq-server-script-log">FAQ:サーバスクリプトのエラーログを出力したい</a><span>2024/04/29 up</span></li>
<li><a href="/ja/manual/faq-json-format">FAQ:変更後の設定ファイルやAPIリクエスト(JSON形式)が正しく認識されない場合の確認事項</a><span>2024/04/29 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />