ブログ

2024/05/15
【プリザンター】 第247回)サーバスクリプトと拡張SQLを使ってサイト情報を取得する方法

サーバスクリプトでサイト情報を取得

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

プリザンターの開発者向け機能の1つに「拡張SQL」があります。これまでも「拡張SQL」の使い方についてご紹介してきました。

【プリザンター】 第215回)拡張SQLのサンプル
【プリザンター】 第181回)複数チェックボックスのうち一つでもチェックされているレコードをフィルタする方法
【プリザンター】 第174回)APIから拡張SQLを実行する方法
【プリザンター】 第147回)拡張SQLを使った所属グループの確認テーブルの作成
【プリザンター】 第122回)拡張フィールドを使って検索をもっと便利にする方法

「拡張SQL」では「サイト情報」を取得することができます。

例えば、スクリプトやサーバスクリプトにてサイトの情報(ビューやフィルタの設定など)を使ってデータの絞り込みなどの処理を実装したいということがあるかと思いますが、用意されているメソッド(サーバスクリプト:siteSettingsなど)では欲しい情報が取得できない場合があります。
このような時に「拡張SQL」を使用します。

今回は「拡張SQL」を、APIと同様に実行できる「サーバスクリプト」で実行し、サイト情報を取得する方法についてご紹介します。

サーバスクリプトで拡張SQLを実行

はじめに「拡張SQLの設定」ファイルと「拡張SQL」ファイルを用意します。
今回は IIS と SQL Server という環境を前提として紹介していきますが、PostgreSQL をお使いの場合は書き方が異なる場合がありますので、 マニュアル を確認ください。

■JSON(拡張SQLの設定):GetSiteSettings.json

{
"Name": "GetSiteSettings",
"Api": true
}

■SQL(拡張SQL)※SQL Server:GetSiteSettings.json.sql
SELECT [SiteSettings]
FROM [Sites]
WHERE [SiteId]=@SiteId

SQLは、サーバスクリプトで指定するサイトID(@SiteId部分)のサイト情報を取得する内容となります。
上記2つのファイルを、.¥Pleasanter¥App_Data¥Parameters¥ExtendedSqls¥ 配下に配置し、IIS(サーバ)を再起動します。

次に、サーバスクリプトを設定します。サーバスクリプトでは「 extendedSql 」を使用します。

■JavaScript(サーバスクリプト):
let row = extendedSql.ExecuteTable('GetSiteSettings', '{"SiteId": 999}');
let obj = JSON.parse(row[0].SiteSettings);
let columns = obj.Links;
for (let column of columns){
context.Log(column.ColumnName + ':' + column.SiteId);
}

1行目:拡張SQLを実行し、サイトIDで指定したサイト(999)のサイト情報を取得します
2~3行目:取得したサイト情報から、今回はリンク(Links)の情報を変数に格納します
4~6行目:リンクが設定されている項目名と、設定されているリンクサイトIDをログに出力します

条件に「画面表示の前」を指定し、サイトID:999の編集画面を開いてみます。
このサイトでは、「状況」は選択肢を直接設定、「分類A」の選択肢はリンクを設定、「分類B」では選択肢の設定はありません。
コンソールにリンクが設定されている項目名(ClassA)と、リンクサイトID(1139)が表示されることが確認できました!

今回はサイト情報からリンク(Links)を取得しましたが、他にもビュー(Views)等の情報を取得することができます。
取得したい情報については、データベース(Implem.Pleasanter)の中にある「Sites」テーブルの [SiteSettings] にて確認できます。

まとめ

いかがでしたか?

拡張SQLでサイト情報を取得することにより、スクリプトにて情報の中から使いたいものを指定することができます。
様々な用途でお使いいただける内容となっていますので、是非お試しください。

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

PAGE TOP