ブログ

2024/07/10
【プリザンター】 第255回)ボタンでサーバスクリプトを発火させる

サーバスクリプトの発火タイミング

こんにちは、CCS田中です。

みなさん、サーバスクリプトは使っていますでしょうか?
サーバスクリプトは非常に便利ですし、スクリプトを書くよりも簡潔にコードが書けたりもするため、私も頻繁に使っています。
最近では、バックグラウンドでサーバスクリプトを実行できるようにもなり、さらに便利になりました。

ただ、通常のサーバスクリプトは処理タイミング(条件)が事前に設定されている範囲内での設定となっており、その条件の都度動いてしまうのが難点です。これを何とか自分が意図したときにだけ動かせないものかと考えたところ、やり方がありそうだったため、その内容を紹介いたします。

今回プロセス機能でボタンを追加して、そのボタンがクリックされたときにだけ動作するようにしたいと思います。
サーバスクリプト自体は単純なもので、「編集画面上にある[数値A]と[数値B]の積を[数値C]に入れる」というものです。

通常のサーバスクリプトであれば、更新時や画面表示時に自動的に実行されてしまっていましたが、今回の方法でプロセスで作成したボタンをクリックしたときにだけ動作するように処理できます。詳細は次で説明します。

ボタンでサーバスクリプトを発火させる方法

まずは事前の準備として、以下のテーブルを作成します。

記録テーブルに[数値A]、[数値B]、[数値C]を作成します。それぞれ名前は「単価」「数量」「合計」とします。


次にプロセスでボタンを付与します。
以下のような設定を行ってください。「全般」以外のその他のタブの設定は不要です。
この設定により、編集画面(新規作成)表示時に画面下部に「実行」ボタンが表示されるようになります。



次に以下のサーバスクリプトを設定します。
条件は「作成前」とします。
プロセスボタン(Process_1)がクリックされたときにのみ動くように条件を書き、数値Aまたは数値Bの両方がNULLではない場合のみ処理するようにします。
(どちらかがNULLの時は画面下にエラー表示させます)

<サーバスクリプト>


try {
// 作成ボタン、もしくはプロセスIDが1のボタンが押された時の処理
if (context.ControlId === 'Process_1') {
// 分類A項目がブランクの時の処理
if (model.NumA != '' && model.NumB != '') {
model.NumC = model.NumA * model.NumB;
}else{
// アラート出力
context.Error ('数値が未入力で計算できません。')
}
}
} catch (ex) {
context.Log(ex.stack);
}



レコードの新規作成ボタンをクリックすると、編集画面の下に「実行」ボタンが表示されます。
「作成」ボタンをクリックすると、「合計」は計算されず、「実行」ボタンをクリックしたときだけ計算されるようになります。


「作成」ボタンで作成したときの結果(合計は計算されない)


「実行」ボタンで作成したときの結果(合計が計算される)






まとめ

いかがでしたか?

サーバスクリプトを使い始めると、いろいろとやりたかった処理ができるようになり、便利に使えると思います。ただしサーバスクリプトはサーバ側で処理が行われるため、利用者数が多くなるとそれだけサーバに負荷がかかってしまいますので注意が必要です。今回のようにボタンクリック時のみ処理するなどはサーバ負荷を軽減する意味でも対策になるかと思います。

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

PAGE TOP