OnSheetとの連携について

フローデザイナーのパレットで「OnSheet」タブにあるコンポーネント群を使用すると、OnSheetサーバー上のスプレッドシートに対してさまざまな操作を行うことができます。
この文書では、本製品とOnSheetサーバーの連携について説明します。

OnSheetとは

OnSheetとはインフォテリア社によって提供されるWebブラウザ上で利用可能なスプレッドシートサーバーです。Excelのような表計算インターフェイスで、ワークシートの作成から管理までWebブラウザのみで行える環境を提供します。

製品体系としては、パッケージ版とネットサービス版の2種類があります。

本製品は、パッケージ版のスプレッドシートサーバーとのみ連携可能です。
OnSheetではパッケージ版のみWebAPIが提供されており、本製品はWebAPIを利用してOnSheetとの連携を実現しています。

OnSheetの特徴

OnSheetの特徴について以下に簡単に説明します。詳細については、OnSheet製品のWebサイトをご参照ください。

本製品との連携では、以下の機能を使用します。

フローサービスとOnSheetの連携

フローサービスとOnSheetを連携すると、以下のような利用例を実現することができます。さらに具体的な例は下記「サンプル」を参照してください。

上記例以外に、フローでメールに添付されたデータを取得してワークシートに書き込んだり、フローでワークシートから読み込んだデータをさまざまな形式(Excel、CSV、XMLなど)に変換してメールに添付して送信したりデータベースに書き込んだり、革新的な業務環境を構築することができます。

OnSheet連携の実装方法

前述の利用例のような連携処理を行うするためには、いくつかの事前準備と設定が必要です。

OnSheetでの準備

フローサービスでOnSheetコンポーネントを使用するためには、最初に対象とするOnSheetサーバーでWebAPIのアプリケーションキーを取得する必要があります。アプリケーションキーの取得方法については、OnSheetのWebAPI開発者ガイドを参照してください。

フローサービスでの準備

フローサービスでは、接続種別が「汎用」のコネクションを作成してOnSheetサーバー接続用の設定を行います。コネクション設定では以下のパラメータを定義します。

パラメータ名 設定内容
url OnSheetサーバーのWebAPIのURLを指定します。
URLは通常「http://<ホスト名>/api/v1/rpc」です。
appKey OnSheetサーバーで取得したアプリケーションキーを指定します。
organisation OnSheetサーバーにログインするユーザーの法人名を指定します。
user OnSheetサーバーにログインするユーザー名を指定します。
password OnSheetサーバーにログインするユーザーのパスワードを指定します。
useProxy FSMCで設定したプロキシーサーバを使用する場合「true」を指定します。
プロキシサーバを使用しない場合は設定不要です。

※ここで設定するユーザーは設計時に使用するユーザーです。実行時にはコンポーネントプロパティにユーザー名をマッピングすることによりユーザーを切り替えることができます。

OnSheetコンポーネント

OnSheetコンポーネントは全部で12個あります。

OnSheetInput OnSheetからのデータ読み込み
OnSheetOutput OnSheetへのデータ書き込み
OnSheetExport ワークブックをExcelファイルとしてダウンロード
OnSheetImport Excelファイルをワークブックとしてアップロード
OnSheetWorkbookList ワークブック一覧の取得
OnSheetWorkbookCreate ワークブック作成
OnSheetWorkbookDelete ワークブック削除
OnSheetRevisionCreate ワークブックのバージョン作成
OnSheetWorksheetList ワークシート一覧の取得
OnSheetWorksheetCreate ワークシート作成
OnSheetWorksheetDelete ワークシート削除
OnSheetRest 任意のREST APIの実行

OnSheetサーバーとの接続の確認方法

コネクション設定を作成後、フローデザイナーでフローを作成して、OnSheetInputコンポーネントまたはOnSheetOutputコンポーネントを配置します。コンポーネントの「コネクション名」プロパティで作成したコネクション設定を選択してコンポーネントをダブルクリックすると、OnSheetサーバーに指定のユーザーでログインしてOnSheetビルダーが起動されます。起動しない場合は、コネクション設定に不備がある可能性があります。接続情報の内容を確認してください。

コンポーネントの使用とWebAPI

OnSheetのWebAPIはRESTで実装されています。そのため、実際には上記コンポーネント群を使用せずに直接任意のHttpClientからAPIを実行することもできます。フローサービスのコンポーネント群はWebAPIをラップしたものでありログイン処理や複数のAPIの組み合わせでしか行えないような操作をカプセル化したものとなっています。WebAPIについての詳細な情報は、OnSheetのWebAPI開発者ガイドを参照してください。

上記コンポーネント群では、内部的にログイン処理を行っているため、特別な前処理なしにフロー内の任意の場所で実行可能です。

OnSheetRestコンポーネントではログイン関連以外のすべてのWebAPIのメソッドを実行することが可能です。メソッドのパラメータ設定は、WebAPI開発者ガイドレベルの知識が必要になります。また、管理者権限でログインしてメソッドを実行できるのはOnSheetRestコンポーネントのみとなっています。

Httpリクエストボタン

ワークシート上にフローを呼出し実行するボタンを作成することができます。ボタンを作成するための書式は以下のようになります。

=button("[ボタン文字列]", "http:request([URL文字列])")
 <例>
 =button("実行", "http:request(http://flowhost:21380/guest/Project1/Flow1)")
ボタン文字列 ボタンに表示される文字列を指定します。
URL文字列 ボタンをクリックしたときに実行するアクションを指定します。
URL実行するフローを呼び出す場合は、Httpリクエストを発行する「http:request」アクションにURLを渡します。

http:requestのパラメータ

http:requestで発行するリクエストには、URLパラメータとして以下のパラメータが付加されます。

bookId ワークブックID
sheetId シートID
sheetName シート名
cellName ボタンの配置されたセル名

フローでこれらのパラメータを受ける場合、HttpStartコンポーネントの出力ストリーム型をParameterListにし、フィールド名に上記パラメータ名を定義します。

各種OnSheetコンポーネント群のワークブックを指定するプロパティではIDでの指定が可能です。フローのパラメータとして受けたワークブックIDを、コンポーネントの前に配置したマッパーからプロパティにマッピングすることで実行時に操作するワークブックを動的に変更することができます。

http:requestのパラメータの応用

http:requestで指定するパラメータにはURLパラメータを埋め込むことが可能です。

//パラメータを指定して実行(便宜的に改行しています)
=button("実行", 
  "http:request(http://flowhost:21380/guest/Project1/Flow1?p1=aaa&p2=bbb)")

指定したパラメータはhttp:request標準のパラメータと同様にHttpStartコンポーネントで受け取ることができます。

ボタンは関数の一種として実装されており、他の関数と組み合わせることが可能です。

//年月を指定してシートに指定された月のカレンダーを書き込むフローを実行
=button("カレンダー取得",
   concatenate("http:request(",
               "http://flowhost:21380/guest/OnSheetSample/getCalendar",
               "?year=",
               C4,
               "&month=",
               E4,
               ")")
        )

上の例ではconcatenate関数(文字列連結関数)を用いて「C4」セルの値をyearパラメータに、 「E4」セルの値をmonthパラメータに設定しています。
この方法を使用して、任意のセルの値をパラメータとしてフローに引き渡すことができます。

メモ

HttpRequestの実行を行うには「http:request」アクションの代わりに「http:irequest」アクションを使用する方法もあります。 (スペル上の違いは「http:<i>request」のiだけです。以降は「アイリクエスト」と表記します。)
2つの使用方法は同じですが、「http:request」ではOnSheetサーバーがHttpリクエストのリクエスタになるのに対して「アイリクエスト」ではブラウザがリクエスタになることのみ異なります。

「アイリクエスト」の場合はブラウザ実装依存の部分もあり、エラー処理が行えないため、通常は「http:request」を使用します。 「アイリクエスト」はデモなどでlocalhostにリクエストを発行しなければならない場合にのみ使用してください。

サンプル

OnSheetが導入された環境では、表計算をユーザーインターフェースとする革新的なWebアプリケーションが作成可能になります。それは既存のWebアプリケーションの枠組みを越えたインタラクティブなシステムであり、さまざまなビジネスシーンで有効なものです。
ここではいくつかの業務パターンに対してOnSheetコンポーネントを使用したフローを適用するサンプルを紹介します。

監視パターン

監視パターンとは

を指します。

売上等を管理するシステムを導入している場合、現時点での状況をシステム内で確認したうえで、さらに時系列での推移を確認するために担当者がシステム内の数値をExcelに転記している場合があります。

こうした情報を定期的にOnSheetに書き出しておくことにより、いつでもWeb上でデータの確認が可能となり、またワークシート上の自動更新する領域以外の部分は担当者が自由にカスタマイズすることができるため、計算項目やグラフ出力などを担当者の好みで自由にカスタマイズできることもOnSheetならではのメリットといえます。

このパターンの処理をフローで行う場合、スケジュールで定期的に取得したデータをOnSheetに書き込むだけの単純なフローで実現することができます。

分析パターン

監視パターンをもう一歩進めたものとして分析パターンという業務があります。
分析パターンとは

  • 条件にマッチする情報をデータベースから抜き出して
  • 担当者が分析・加工する業務

を指します。

このパターンと先の監視パターンとの違いは、データ取得の条件を担当者がシート上で指定してその場でリクエストできる点です。

テンプレートとして作成するワークシート上にはパラメータを入力するエリアと取得したデータを表示するエリアが必要ですが、 それ以外の部分を担当者が自由に加工することができます。

フローとしては後半のデータ取得から書き込みまでの流れは先の監視パターンと同じですが、前半にOnSheetからパラメータを読み取る部分が追加されます。
(パラメータはhttp:requestのパラメータとして引き渡すことが可能です。)

報告書パターン

報告書パターンとは

  • データベースから売上や週間活動等の業務データを抜き出し
  • それをExcel等を用いて報告書の形に加工して
  • 上長、経営会議、関連会社等に提出する業務

を指します。

データ取得の処理は分析パターンの場合とほぼ同様(上の例では「担当者」と「期間」をパラメータとしてデータを取得します)ですが、「送信」ボタンを置いて加工したデータを外部に送信しているところが異なります。
データの送信処理はいくつかパターンが考えられますが、

  • 他のユーザーのOnSheetに転記する
  • Excelファイル化してメール送信する
  • データベースに登録する

など、いずれもフローでコンポーネント数個を並べるだけで作成可能です。

OnSheetを使うことのメリット

ここでは業務の過程でExcelを使用している業務パターンをOnSheetに置き換えた例をあげてみましたが、これ以外にもさまざまな業務パターンでOnSheetを活用することは可能です。
いずれの場合にも

  • UIの作成をExcel感覚で行える(Excelで作成後インポートも可能)ので作成・変更のコストが低い
  • Excelファイルを管理する必要がなくなり、また柔軟なアクセス権の設定が可能なので強固なセキュリティを確保
  • 更新履歴を自動的・明示的に残せるためバージョンの管理が容易
  • 作りこまれたWebベースのシステムに比べてはるかにエンドユーザーの自由度が高い

というメリットがあります。
もちろん通常の社内共有スプレッドシートサーバーとして活用することも可能です。

 

▲ このページのトップへ