CUSTOMIZE RECIPES
標準機能で足りないときの実現レシピ
グラフと集計、帳票と印刷、多段の承認ワークフロー、明細の一括入力、期限の通知、入力チェックについて、標準機能でできる範囲と、足りないときの実現のしかたをまとめました。スクリプト・サーバスクリプト・API・拡張SQLのどれを使うかを題材ごとに示し、手順とサンプルコードはマニュアルの該当ページへご案内します。
題材から探す
プリザンターは、標準機能で作ったアプリに、足りないところだけをコードで補えます。題材ごとに、まず標準機能でできることを確かめ、そのうえで足りない部分の実現のしかたをご覧ください。
| 題材 | 標準機能でできること | 足りないときの手段 |
|---|---|---|
| グラフや集計を見せたい | 分析チャート、時系列チャート、クロス集計、一覧画面の集計、ダッシュボード | ダッシュボードのカスタムHTML、APIで外部のツールとつなぐ |
| 帳票を出したい・印刷したい | CSVファイルへのエクスポート、ブラウザでの印刷 | スタイル(CSS)で印刷時の表示を整える、APIで外部のツールとつなぐ、認定パートナーのソリューション |
| 多段の承認ワークフローを作りたい | プロセス、状況による制御 | サーバスクリプトで承認ルートを自動で設定する |
| 明細をまとめて入力したい・取り込みたい | リンク(親子のテーブル)、一覧編集、CSVファイルのインポート | APIでまとめて作成・更新する、スクリプト・サーバスクリプトでレコードを作る |
| 期限が近づいたら自動で知らせたい | リマインダー、通知 | サーバスクリプトで通知を送る、バックグラウンドサーバスクリプト |
| 業務に合わせた入力チェックを入れたい | 入力必須、入力検証(正規表現)、状況による制御 | スクリプト・サーバスクリプトで独自の検証を行う |
グラフや集計を見せたい
テーブルには、集計とチャートの表示が標準で用意されています。まず標準の表示で足りるかを確かめ、足りない部分を、ダッシュボードのカスタムHTMLや、APIでつないだ外部のツールで補います。
標準機能でできること
- 分析チャート:状況・担当者・分類などの項目ごとに、件数・合計・平均・最大・最小を円グラフで表示します。円グラフは複数並べられます
- 時系列チャート:分類項目ごとの件数や、数値項目の合計・平均などを、面または折れ線のチャートで表示します。横軸は、日付項目や履歴から選べます
- クロス集計:列に分類項目か日付項目、行に分類項目か数値項目を選んで集計します。バージョン1.5.8.0以降では、セルをクリックして、集計の対象になったレコードを一覧で確かめられます
- 一覧画面の集計:レコードの件数や、数値項目の合計・平均などを、一覧画面に表示します。フィルタをかけると、その条件で集計し直します
- ダッシュボード:タイムライン・カレンダー・カンバン・一覧などのパーツを並べられます。カレンダーと一覧のパーツでは、複数のテーブルのレコードをまとめて表示できます
分析チャートと時系列チャートの有効・無効は、テーブルの管理で切り替えられます。
足りないときの実現のしかた
| 手段 | できること |
|---|---|
| ダッシュボードのカスタムHTML | ダッシュボードに、指定したHTMLを表示するパーツを置けます。外部のツールで作ったグラフを埋め込んだり、スクリプト・スタイルと組み合わせたりして使います |
| APIで外部のツールとつなぐ | 複数レコード取得のAPIや、テーブルのエクスポートのAPIでデータを取り出し、外部のツールで集計やグラフ化を行います。複数レコード取得のAPIが1回で返す件数には上限があり、続きを取得する方法はFAQにあります |
| スクリプトのイベント | 分析チャート・時系列チャート・クロス集計の画面を読み込んだときに、スクリプトの処理を実行できます |
| データベースのビュー | データベースを直接参照するツールを使う場合に向けて、プリザンターで設定した日本語の表示名でデータベースのビューを作るサンプルが、FAQにあります(SQL Serverの環境向け) |
| 認定パートナーのソリューション | グラフ表示やデータの可視化のソリューションを、認定パートナーが提供しています |
帳票を出したい・印刷したい
入力したデータを帳票に出力して印刷することについて、マニュアルのFAQでは、認定パートナーが提供するソリューションを使う方法を案内しています。自分で作る場合は、エクスポートやAPIでデータを取り出して、外部のツールで帳票の形にします。画面をそのまま印刷するときは、スタイルで印刷時の表示を整えられます。
標準機能でできること
- エクスポート:一覧画面で選んだレコード(選ばなければすべてのレコード)を、CSVファイルに書き出せます。書き出す項目の順序などは、テーブルの管理の「エクスポート」で書式として設定できます
- 印刷:画面は、ブラウザの印刷機能で印刷します
足りないときの実現のしかた
| 手段 | できること |
|---|---|
| スタイル(CSS) | 印刷のときだけ、画面下部のコマンドボタンなどを非表示にできます。下のコードは、マニュアルのFAQに載っているサンプルです |
| 認定パートナーのソリューション | 帳票出力のソリューションを、認定パートナーが提供しています |
| APIで外部のツールとつなぐ | APIでレコードを取り出し、表計算ソフトなど外部のツールで帳票の形にします。Excel VBAからAPIでレコードを取得して、シートに転記するサンプルがFAQにあります |
| プロセスのボタン | プロセス機能のボタンには、スクリプトを実行するアクションを設定できます。マニュアルでは設定例として、状況が承認済み以降のときに画面を印刷する「印刷」ボタンを挙げています |
| サーバスクリプトでのファイル出力 | テーブルのデータを、サーバー上のフォルダにCSVファイルとしてエクスポートするサンプルがあります。使うには、パラメータ(Script.json)での設定が要ります |
@media print {
#MainCommandsContainer { /* コマンドボタン */
display:none;
}
#Footer { /* Copyright表記 */
display:none;
}
}
テーブルの管理の「スタイル」に登録して使います。手順は、下のFAQにあります。
多段の承認ワークフローを作りたい
申請・承認・差戻しの流れは、標準機能の「プロセス」と「状況による制御」で作れます。金額によって承認の段数が変わる稟議申請の例が、設定のしかたと合わせてマニュアルにあります。承認者を所属や金額から自動で決めたい場合は、サーバスクリプトを足します。
標準機能でできること
- プロセス:状況を進めるボタン、入力検証、状況ごとの条件、ボタンを表示する相手のアクセス制御、自動採番、ボタンを押したときの通知を設定できます
- 状況による制御:状況に応じて、レコードを読取専用にしたり、項目ごとに入力必須・読取専用・非表示を設定したりできます
- 多段の例:マニュアルのサンプルコード集に、申請金額に応じて最大3段階の承認を経て経理で確定する、差戻しつきの承認プロセスを、プロセスと状況による制御で作る例があります。デモ環境の「稟議申請の例」で、設定を確かめられます
インポート・一括更新・APIでレコードを登録・更新するときは、状況による制御の読取専用や入力必須の設定は働きません。
足りないときの実現のしかた
| 手段 | できること |
|---|---|
| サーバスクリプト | 申請者の所属部署と申請金額から承認ルートを自動で設定し、決裁者へのメール通知、承認時の次の決裁者への更新、承認された申請の読取専用化までを行う例が、サンプルコード集にあります。6つのサーバスクリプトで構成されていて、インポートして試せるサイトパッケージも公開されています |
| スクリプト | 編集画面のスクリプトから、指定したプロセスを実行できます($p.execProcess) |
| 流れを図で確かめる | Enterprise EditionのSite Visualizerで、設定したプロセスの流れを図で確かめられます(プロセス図表示は、バージョン1.5.4.0以降) |
マニュアルの該当ページ
標準機能
マニュアル:テーブルの管理:プロセス
マニュアル:テーブルの管理:状況による制御
マニュアル:応用編:プロセスと状況による制御
FAQ:稟議申請などのワークフロー(承認プロセス)をプロセス機能で実現する
FAQ:項目の非表示や読取専用などの状態変更を「状況による制御」機能で実現する
FAQ:利用シーンにあわせた通知設定をしたい(承認担当者のグループへの通知の例)
足りないとき
マニュアル:サンプルコード集
FAQ:稟議申請などのワークフロー(承認プロセス)をサーバスクリプトで実現する
FAQ:稟議申請ワークフローの例のサイトパッケージをインポートする
マニュアル:スクリプト:$p.execProcess
マニュアル:Site Visualizer:プロセス図表示
プリザンターで作るワークフローの紹介
明細をまとめて入力したい・取り込みたい
1件の見出しに複数の明細がつくデータは、見出しのテーブルと明細のテーブルを分けて、リンクで親子の関係にできます。明細をまとめて入れるには、一覧画面での編集、CSVファイルのインポート、APIなどの方法があります。
標準機能でできること
- リンク:テーブルの間に親子の関係を設定できます。親のレコードの編集画面に、リンクした子のレコードの一覧と、子のテーブルへの新規作成ボタンが表示されます
- サマリ:子のレコードの件数や、数値項目の合計・平均・最大・最小を、親のレコードの数値項目に入れられます
- 一覧編集:一覧編集種別を「一覧画面で編集」にすると、編集画面に移らずに、一覧画面でレコードを編集できます。タイトル・内容の項目やコメントの項目は編集できないなどの制限があります
- インポート:CSVファイルから、レコードをまとめて取り込めます。キーにする項目を指定して、すでにあるレコードを更新することもできます
足りないときの実現のしかた
| 手段 | できること |
|---|---|
| API(レコード一括作成・更新) | 1回のリクエストで、複数のレコードを作成・更新できます。キーに指定した項目が一致するレコードは更新し、一致するレコードが無ければ新しく作ります。1回に扱える件数の上限は、パラメータ(General.jsonのBulkUpsertMax)で決まります。途中でエラーが起きると、それ以降の処理は中止されます |
| API(レコードのインポート) | CSVファイルを読み込んでレコードを作成・更新するバッチ処理のサンプルが、FAQにあります |
| スクリプト | 画面のスクリプトから、レコードを作成できます($p.apiCreate)。更新ボタンを押したあとに、別のテーブルにレコードを作るサンプルがFAQにあります |
| サーバスクリプト | サーバー側で、指定したテーブルにレコードを作成できます(items.Create)。サーバー上のフォルダに置いたCSVファイルをインポートするサンプルもあります |
{
"ApiVersion": "1.1",
"ApiKey": "(APIキー)",
"Keys": [
"ClassA"
],
"KeyNotFoundCreate": true,
"Data": [
{
"Title": "新機能XXを開発する1",
"ClassHash": {
"ClassA": "RC0001"
}
},
{
"Title": "新機能XXを開発する2",
"ClassHash": {
"ClassA": "RC0002"
}
}
]
}
マニュアルに載っているサンプルです。このJSONを、/api/items/{サイトID}/bulkupsert にPOSTします。この例では、分類Aをキーにしています。APIキーは、環境に合わせて読み替えてください。
マニュアルの該当ページ
標準機能
マニュアル:応用編:リンク
マニュアル:テーブルの管理:サマリ
マニュアル:レコードの一覧編集
マニュアル:テーブルの管理:一覧編集種別
マニュアル:レコードのインポート
マニュアル:インポート時のキー項目指定
足りないとき
マニュアル:API:レコード一括作成・更新
FAQ:バッチ処理でCSVファイルを読み込んで対象のレコードを作成または更新したい
マニュアル:スクリプト:$p.apiCreate
FAQ:更新ボタンを押したタイミングで別テーブルに新規レコードを作成したい
マニュアル:サーバスクリプト:items.Create
マニュアル:サーバスクリプトによるファイルインポートサンプル
期限が近づいたら自動で知らせたい
期日をもとにした通知は、標準機能の「リマインダー」で設定できます。標準の条件や宛先で足りない場合は、サーバスクリプトから通知を送ります。
標準機能でできること
- リマインダー:期日を過ぎたレコードや、指定した範囲内で期日が近づいたレコードを、指定した時刻と周期(毎日・毎週・毎月など)で通知します。通知には、メールやチャットツールを使えます
- 対象の絞り込み:状況が完了・保留のレコードは、既定では通知されません。条件にビューを指定して、対象を絞ることもできます
- 宛先:固定のメールアドレスのほか、レコードの担当者・管理者や、項目に書かれたメールアドレスを宛先にできます
- 通知:レコードの作成・更新・削除のときに通知します。ビューと組み合わせて、通知する条件を指定できます
リマインダーを使うには、あらかじめサーバー側でリマインダー機能を有効にしておきます。
足りないときの実現のしかた
| 手段 | できること |
|---|---|
| サーバスクリプト | 通知のオブジェクトを作り、任意のタイミングで通知を送れます(notifications.New・notification.Send)。下のコードは、マニュアルに載っているメール送信のサンプルです |
| バックグラウンドサーバスクリプト | サーバスクリプトを、毎時・毎日・毎週・毎月などのスケジュールで実行できます。設定できるのは特権ユーザだけで、パラメータ(Script.json)で有効にしておく必要があります。処理によっては、テナント全体に負荷がかかることがあります |
let notification = notifications.New();
notification.Address = 'xxxxx@example.com';
notification.CcAddress = 'yyyyy@example.com';
notification.BccAddress = 'zzzzz@example.com';
notification.Title = '通知テスト';
notification.Body = 'サーバスクリプトから通知しています。';
notification.Send();
使うには、パラメータ(Notification.json)で、対象の通知種別を有効にしておきます。
業務に合わせた入力チェックを入れたい
入力必須と、正規表現による入力検証は、標準機能で設定できます。標準の設定で表せないチェックは、スクリプトやサーバスクリプトで行います。
標準機能でできること
- 入力必須:項目ごとに、入力必須を設定できます
- 入力検証:タイトル・内容・分類・説明・コメントの項目は、入力した内容を正規表現で検証し、エラーメッセージを表示できます。項目からフォーカスが移ったときの検証と、レコードの作成・更新のときの検証を設定できます
- 状況による制御:状況に応じて、項目を入力必須にできます。日付が未入力のときに、別の項目を入力必須にする設定例がFAQにあります
- プロセス:プロセスのボタンごとに、入力検証を設定できます
足りないときの実現のしかた
| 手段 | できること |
|---|---|
| スクリプト | 独自の入力検証を行い、結果をメッセージで表示できます($p.events.before_validate)。サンプルがFAQにあります。スクリプトはブラウザ上で動くため、APIでの更新やインポートのときには働きません |
| サーバスクリプト | レコードの作成前・更新前・削除前に判定を行い、エラーのときは処理をキャンセルして、メッセージを画面に表示できます(context.Error)。コードの例は、開発者向けのページにあります |
どの手段を選ぶか
まず、テーブルの管理の設定(標準機能)で足りるかを確かめます。足りない部分だけを、次の手段で補います。手段によって、動く場所と、向いていることが違います。
| 手段 | 動く場所・設定する場所 | 向いていること・注意 | マニュアル |
|---|---|---|---|
| スクリプト | ブラウザ上で動くJavaScriptです。テーブルの管理の「スクリプト」に登録します | 標準機能ではできない画面の操作や、画面上のデータの加工に向いています。APIでの更新やインポートのときには、データを加工できません | 開発者ガイド:スクリプト |
| スタイル | ブラウザに適用されるCSSです。テーブルの管理の「スタイル」に登録します | 画面の見た目や、印刷のときの表示を変えるのに向いています | 開発者ガイド:スタイル |
| サーバスクリプト | サーバー側で動くJavaScriptです。テーブルの管理の「サーバスクリプト」に登録し、実行する条件(作成前・更新後・画面表示の前など)を選びます | 条件分岐、計算、文字列の処理、レコードの操作、メールやチャットへの通知、動的なアクセス制御に向いています。APIでの更新やインポートのときにも、データの加工などを行えます | 開発者ガイド:サーバスクリプト 実行する条件 |
| バックグラウンドサーバスクリプト | サーバー側で、スケジュールに沿って動きます。テナントの管理で、特権ユーザが設定します | 毎時・毎日・毎週・毎月など、決まったタイミングで動かす処理に向いています。処理によっては、テナント全体に負荷がかかることがあります | テナント管理機能:バックグラウンドサーバスクリプト |
| API | 他のシステムから、HTTPとJSONで呼び出します。APIキーを作成して使います | 他のシステムとのデータの入出力に向いています。レコードの取得・作成・更新・削除、一括作成・更新、インポート、エクスポートなどができます | 開発者ガイド:API |
| 拡張SQL | データベースに対して実行されるSQLです。SQLをJSON形式のパラメータファイルにして、サーバーの専用のフォルダに置いて登録します | レコードの作成前・更新後などのタイミングで任意のSQLを実行したり、APIやサーバスクリプトから呼び出したりできます。テーブルの権限の確認は行われないため、SQLの中で確認が要ります。誤って使うと、プリザンターを利用できなくなったり、データを壊したりするおそれがあるため、十分な検証とテストが要ります | 開発者ガイド:拡張SQL |
| 拡張機能(拡張スクリプト・拡張スタイル・拡張サーバスクリプトなど) | サーバーのパラメータのフォルダに、ファイルを置いて設定します | テーブルごとではなく、システム全体に共通の処理や見た目を足すのに向いています | 開発者ガイド:拡張機能 |
スクリプトとサーバスクリプトは、ログインしているユーザの権限で実行されます。
マニュアル:開発者ガイド
拡張の仕組みの全体像と、コードの例(開発者向けのページ)
作り込むときの注意
スクリプトやサーバスクリプトは、その会社だけの要件を手早く形にするのに向いています。一方で、標準機能で足りない部分をスクリプトで無理に作り込むと、動作が遅くなったり、作った人にしか直せなくなったりすることがあります。バージョンアップのたびに、動作の確認も要ります。
- バージョンアップ:プリザンターを上げるたびに、足した処理の動作を確かめます。新しいバージョンで変わったことは、リリースノートで確かめられます
- 性能:サーバスクリプトでレコードの読み書きを行うと、サーバー側の処理の負荷が増えることがあります。実行時間がタイムアウトの時間を超えると、処理が止まります
- サンプルコード:マニュアルのサンプルコードは、すべてのケースでの動作を保証するものではありません。お使いの環境で動作を確かめてから使います
- 引き継ぎ:スクリプトで足した処理は、作った方が保守します。担当者が替わると、引き継ぎが要ります
- 環境の移行:サイトパッケージで別の環境へ移すと、サイトIDやレコードIDが変わります。スクリプトの中にIDを直接書いている場合は、移したあとに書き換えが要ります
マニュアル:リリースノート
マニュアル:サーバスクリプト:items(注意事項)
マニュアル:サンプルコードのご利用について(免責事項)
マニュアル:サイトパッケージのインポート
多くの利用者に役立つ機能なら
ほかの利用者にも役立つ汎用的な機能であれば、スクリプトで作り込むほかに、2つの方法があります。機能の要望としてGitHubのIssueに書く方法と、技術支援サービスの「標準機能追加」で、プリザンター本体の標準機能として追加する開発を開発元に依頼する方法です。
標準機能で足りないとき(スクリプトで作り込む場合と、標準機能の追加を依頼する場合の違い)
GitHub:プリザンターのIssue(機能の要望)
スクリプトの編集と反映の手間を減らすツール
Enterprise Editionに含まれるCode Assist(Visual Studio Codeの拡張機能)を使うと、Visual Studio Codeでスクリプト・サーバスクリプト・スタイルなどを保存したときに、同時にプリザンターへ登録・更新されます。自社の環境に構築したCommunity Editionでは、トライアル機能で90日間試せます。
困ったとき
年間サポートで質問する
年間サポートサービスでは、「スクリプトをどう書けばよいか」といった質問を、開発元のサポートエンジニアにできます。開発機能についてのアドバイスや、サンプルスクリプトの提供を受けられます。機能の要望は、年間サポートでは受け付けていません。GitHubのIssueにお書きください。
認定パートナーに頼む
構築を任せたい場合は、認定パートナーを探せます。帳票出力やデータの可視化など、認定パートナーが提供するソリューションもあります。
プリザンターの導入をご検討中の方へ
標準機能でどこまでできるか、スクリプトによる拡張や他のシステムとの連携をどう進めるか、費用など、お気軽にご相談ください。