CookBook

スプレッドシートのバインディングデータを別途テーブルに出力する方法

投稿日:

スプレッドシートのJsonデータとバインディングデータは、Formaヘッダーテーブルにバイナリカラムで格納されます。
Formaヘッダーテーブルに格納されたスプレッドシートデータは、登録データ情報管理APIやLogicDesignerのユーザ定義タスク「Forma登録情報」で取得できます。
ただし、バイナリカラムに登録するため、直接SQLでスプレッドシートデータを扱うことはできません。

このCookBookでは、スプレッドシートのバインディングデータを別途テーブルに出力する方法について紹介します。
別テーブルに登録することで、スプレッドシート上の任意のカラムデータがSQLで操作することができます。

完成イメージ


1. サンプルのフローを承認します。
2. 案件終了処理で、スプレッドシートのバインディングデータが、テーブルに出力されます。

  • 承認画面

  • テーブル一覧画面

完成サンプル

以下の完成サンプルをダウンロードしてご活用ください。
なお、以下のサンプルはintra-mart Accel Platform 2018 Winterの環境を利用して作成したものです。

画面アイテム「スプレッドシート」は2018 Winterに追加された機能の為、より前のバージョンでは動作しません。

完成サンプルをご利用の際は、テナント環境セットアップでサンプルデータのインポートを行い、利用するユーザのロールに「BIS担当者」を設定してください。

レシピ

  1. BISワークフローを作成する。
  2. テーブルを作成する。
  3. SQL定義を作成する。
  4. Forma登録情報定義を作成する。
  5. ロジックフローを作成する。
  6. ユーザプログラムの案件終了処理を設定する。

1. BISワークフローを作成する。

申請と承認ができるBISワークフローを作成します。

BIS名
152072_Cookbook
  • 画面アイテム「スプレッドシート」と「ボタン(登録)」を配置してください。

  • 「スプレッドシート」のプロパティからワークブックエディタを開き、以下をインポートします。
    152072_Cookbook.xlsx

配置した画面上のスプレッドシートのスクロールを制御するには、ワークブックエディタの設定⇒スクロールバーで行えます。
今回は、不要なスクロールを防ぐために、「最終行・列に合わせてバーを表示」にチェックを入れます。

  • 次に、データのバインディングを行います。

詳細設定タブに移動しバインディング設定にチェックを入れ、フィールド定義タブが選択できるようになります。

スプレッドシート上のセルを選択し、「選択中のセルを追加」をクリックすることでバインディングを行うことができます。

今回は以下の通りです。

バインド先 フィールド識別ID タイプ
申請日 apply_date 日付
申請者氏名 applicant_name 文字列
所属部署 department 文字列
申請者住所 applicant_address 文字列
最寄駅 nearby_station 文字列

テーブル定義タブのに移動し、テーブル1が選択された状態で、「定義を設定」をクリックします。

続いて、以下のように設定します。

テーブル識別ID: transport_expense_table

バインド先 フィールド識別ID タイプ
利用交通機関 facility 文字列
乗車区間(From) section_from 文字列
乗車区間(To) section_to 文字列
3ヵ月(定期) three_month_pass 数値
1ヵ月(定期) one_month_pass 数値
1日(往復) day_fare 数値

2. テーブルを作成する。

バインディングデータを格納するテーブルを作成します。

  • テナント管理⇒データベース操作を選択し、以下のSQLを実行します。

※ PostgreSQL向けに作成しています。他DBご利用の場合、適切な状態に変更してご利用ください。

3. SQL定義を作成する。

テーブルにデータをインサートする為のIM-LogicDesignerユーザ定義を作成します。

今回は「2. テーブルを作成する。」で作成した二つのテーブル向けに、一つずつ作成します。

  • サイトマップ⇒LogicDesigner⇒ユーザ定義⇒SQL定義新規作成を選択します。
テーブル ユーザ定義ID・ユーザ定義名 ユーザカテゴリ
cookbook_transport_user 152072_Cookbook_SQL_USER Sample
cookbook_transport_expense 152072_Cookbook_SQL_EXPENSE Sample
  • クエリ種別をINSERTに変更し、「テーブルからクエリを生成する」から「2. テーブルを作成する。」で作成したテーブルを選択することで自動的にフィールドが埋まります。

4. Forma登録情報定義を作成する。

バインディングデータを取得する為のIM-LogicDesignerユーザ定義を作成します。

  • サイトマップ⇒LogicDesigner⇒ユーザ定義⇒Forma登録情報定義新規作成を選択します。
ユーザ定義ID・ユーザ定義名 ユーザカテゴリ
152072_Cookbook_GET Sample
  • アプリケーション種別をBISに変更し、定義情報の「検索」から「1. BISワークフローを作成する。」で作成したBISワークフローを選択します。返却値にバインディングデータが表示されることを確認します。

5. ロジックフローを作成する。

「3. SQL定義を作成する。」と「4. Forma登録情報定義を作成する。」で作成したユーザ定義を組み合わせたロジックフローを作成します。

フロー定義ID・フロー定義名 フローカテゴリ
152072_Cookbook_LD Sample
  • IM-LogicDesignerで、以下のようにアイテムを配置します。

入出力設定の入力には以下を設定します。

  • object imwProcessCommon
    ┗ string userDataId

出力には以下を設定します。

  • boolean error
  • boolean mailSendFlag

マッピング設定では、以下のようにマッピングを行います。

「4. Forma登録情報定義を作成する。」で作成した「152072_Cookbook_GET」は以下の通りです。

  • 登録データIDは、入出力設定の入力で設定したuserDataIdをマッピングします。

「3. SQL定義を作成する。」で作成した「152072_Cookbook_SQL_USER」は以下の通りです。

「152072_Cookbook_GET」から同名の項目を「152072_Cookbook_SQL_USER」にマッピングします。

「3. SQL定義を作成する。」で作成した「152072_Cookbook_SQL_EXPENSE」は以下の通りです。



配列を扱うため、「繰り返し開始」と「繰り返し終了」のタスクを利用します。

到繰り返し処理を利用したフローの詳細は [繰り返し処理を利用したフロー] - [繰り返し処理対象の指定と値の利用] を参照してください。

※今回は説明簡素化のため、明細行の行数分の繰り返しを行い、入力されていない行のデータも出力されます。

「繰り返し開始」の繰り返し対象を設定します。

  • 明細行の「transport_expense_table」の配列を指定します。

以下の項目から「152072_Cookbook_SQL_EXPENSE」にマッピングします。

  • ユーザ情報を「152072_Cookbook_GET」から
  • 明細情報を「繰り返し開始」から

終了タスクは以下の通りです。

今回は、メール送信を利用しないので、定数設定に「false」を設定した定数を用意し、終了タスクの出力、mailSendFlagerrorにマッピングします。

6. ユーザプログラムの案件終了処理を設定する。

サイトマップから、ワークフローのロジックフロー管理で、「5. ロジックフローを作成する。」で作成したロジックフローのリソース設定画面を開きます。

プルダウンで「ユーザプログラム」を選択し、「案件終了処理」を追加します。

次に、サイトマップ⇒ワークフロー⇒コンテンツ定義から、「1. BISワークフローを作成する。」作成したワークフローのユーザプログラムタブを開きます。

新規作成で以下のように設定します。

  • プログラム名: 152072_Cookbook_LD
  • プラグイン種別: 案件終了処理
  • プラグイン種類: 【案件終了処理】LogicDesigner
    フロー定義には、「5. ロジックフローを作成する。」で作成したロジックフローを選択します。
  • 実行順番: 1

以上でスプレッドシートのバインディングデータを別途テーブルに出力する準備が整いました。
「152072_Cookbook」フローの承認を行い、入力されたデータがテーブルに出力されていることが確認できます。

-CookBook
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

IM-LogicDesignerを利用して、申請日が一定期間経過した特定フローの完了案件をアーカイブする

このCookBookでは、LogicDesignerを利用して、申請日が一定期間経過した特定フローの完了案件をアーカイブする方法について紹介しています。 完成イメージ 1. サンプルのロジックフローを …

no image

e Builder から Payara を起動する方法

この CookBook では、e Builder から Payara を起動する方法について紹介しています。 レシピ External Tools を表示します。 Program を追加します。 Pr …

IM-BloomMaker スプレッドシートの入力内容を DB に保存する

この CookBook では intra-mart Accel Platform 2020 Winter から利用可能になったスプレッドシートで、セルに入力した値を DB に保存する方法を紹介します。 …

no image

IM-BloomMaker コンボボックスエレメントのサジェストにサーバから取得した値を表示する

このCookBookでは、intra-mart Accel Platform 2020 Spring から利用可能になったコンボボックスエレメントのサジェストにサーバから取得した値を表示する方法につい …

no image

IM-BloomMaker で ページアイコン(favicon) を設置する方法

この CookBook では、IM-BLoomMaker でページアイコン(favicon)を設置する方法について紹介します。intra-mart Accel Platform 2023 Spring …