ユーザマニュアル

「プリザンターをもっと活用するために」資料ダウンロード 「プリザンター入門」発売中! 【3/13開催】プリザンター10周年記念イベント!豪華ゲスト続々!

2026/02/02

MANUAL

開発者向け機能:サーバスクリプト:context.AddResponse

## 概要 [サーバスクリプト](/ja/manual/table-management-server-script)で任意のクライアントレスポンスを返却します。 ## 制限事項 1. リンクしたアイテムの作成ボタンでの子レコードの作成後の画面遷移など、method「Href」を指定しても製品側仕様が優先する場合があります。 ## 構文 ``` context.AddResponse(method,target,value) ``` ## パラメータ |パラメータ|型|概要| |:--|:--|:--| |method|string|レスポンスの操作種別を指定します。下記のmethod部分をご参照ください。| |target|string|対象の要素のIDを指定します。| |value|object|要素や値を指定します。| ### method |種別|説明| |:--|:--| |ReplaceAll|上記のtargetに指定した要素をvalueに指定した要素に置き換えます。| |Set|フォームに情報を格納します。| |Href|ポストバック後の遷移先URLを指定します。| ## 戻り値 戻り値はありません。 ## 使用例① 以下の例では、分類Cのフィールドを \<div style="color:red">Pleasanter\</div> で置き換えます。 ``` context.AddResponse('ReplaceAll','#Results_ClassCField','<div class="field-normal" style="color:red">Pleasanter</div>'); ``` ## 使用例② 以下の例では、フォーム($p.data.MainForm)に以下の情報を格納します。 【格納する情報】 ・項目:数値A項目 ・値:123 ``` context.AddResponse('Set','NumA',123); ``` ## 使用例③ 以下の例では、作成後にサイトID1234のテーブルに遷移します。 ``` context.AddResponse('Href','','/items/1234/index'); ``` ## サンプルコード <details> <summary>1. テーブル内に期限切れレコードが存在した場合、ガイド欄にアナウンスを表示する</summary> ReplaceAllメソッドでガイド欄の文言を動的に置き換えるサンプルコードです。 期限付きテーブルの一覧表示時に、期限切れのレコードを取得、1件でも期限切れレコードがあった場合、"ガイド欄の内容をReplaceAllメソッドで置き換えます。 期限切れレコードが存在する場合、以下のようにガイド欄に文言とリンクが表示されます。 ![image](https://pleasanter.org/binaries/8c49761c86924e9d9cf2f7ebcf082538) **※なお、本サンプルはVer1.5.0.0以降に対応しています。** ##### CSS 以下スタイルを設定することで、ガイド欄の文字色を赤にします。 ```css .md-viewer * { color: red !important; } ``` ##### JavaScript 条件:画面表示の前 ```javascript // 一覧画面(index)のときだけ動作 if (context.Action !== 'index') return; // 文字列をHTMLとして差し込むため、最低限のエスケープ const escapeHtml = (s) => String(s ?? '').replace( /[&<>"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;', })[c], ); // /items/<id>... の <id> 以降を落として /items/ で終わるURLを作る const getItemsBaseUrl = () => { const url = String(context.Url ?? ''); const m = url.match(/^(.*?\/items\/)/); return m ? m[1] : ''; }; // 期限切れ(Overdue)のレコードを取得 const getOverdueItems = () => { const param = { View: { Overdue: true, ColumnSorterHash: { IssueId: 'asc' } }, }; return Array.from(items.Get(context.SiteId, JSON.stringify(param))); }; // main処理 // 期限切れレコードを取得 const overdueItems = getOverdueItems(); // 期限切れレコードがなければ終了 if (overdueItems.length === 0) return; // ベースURLを生成 const baseUrl = getItemsBaseUrl(); // 期限切れレコードのリンク一覧HTMLを生成 const linksText = overdueItems .map((item) => { const id = item.IssueId; const title = escapeHtml(item.Title); return `- ### [${title}](${baseUrl}${id})`; }) .join('\n'); const guideText = ` [md] # 期限切れのアイテムがあります。至急確認してください。 ## 対象レコード ${linksText} `; // ガイドエリア用のHTMLを生成 const html = ` <div id="Guide"> <div> <markdown-field class="is-disabled"> <textarea class="md-text" id="guide-textarea" data-readonly="1">${guideText}</textarea> </markdown-field> </div> </div> `; // ガイドエリア(#Guide)を差し替え context.AddResponse('ReplaceAll', '#Guide', html); ``` </details> ## 関連情報 <div id="ManualList"><ul><li><a href="/ja/manual/table-management-server-script">テーブルの管理:サーバスクリプト</a><span>2026/02/10 up</span></li></ul></article> <ul><li><a href="/ja/manual/server-script">開発者向け機能:サーバスクリプト</a><span>2025/11/27 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />
TOP