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

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

関連記事

no image

No.8 Excel からの一括ユーザ一括登録

この記事は、EWS 2017で行われたLogicDesignerの講演内容に関する記事です。 こちらの例では、LogicDesignerを利用して、入社や組織変更等の発生時に有用なExcelファイルの …

no image

CookBookからダウンロードしてきたプロジェクトのインポート方法

このCookBookでは、他のCookBookからダウンロードしてきたe Builderのモジュール・プロジェクトのインポートについて紹介しています。 プロジェクトをインポートし、プロジェクトの設定を …

IM-LogicDesignerを利用して、IM-Workflow完了案件の確認対象者を削除する

このCookBookでは、IM-LogicDesignerを利用して、IM-Workflow完了案件の確認対象者を削除する方法について紹介しています。 完了案件でも、確認対象者が確認することはできます …

no image

IMBox の「Like!」を別のキャプションにする方法

この Cookbook では、IMBox の「Like!」を別のキャプションにする方法を紹介します。 具体的には、「Like!」を「確認」に変更する方法を紹介します。 この Cookbook では、日 …

no image

ラジオボタンの値やフォーカスによってアイテムの色を変更するには

このCookbookでは、カスタムスクリプトによるフィールドスタイルの変更方法を説明します。 アクション設定とカスタムスクリプトの組み合わせにより、入力値やフォーカスイベントに合わせてアイテムのスタイ …

まだデータがありません。

RSSRSSRSSRSS