OnSheetとの連携について
フローデザイナーのパレットで「OnSheet」タブにあるコンポーネント群を使用すると、OnSheetサーバー上のスプレッドシートに対してさまざまな操作を行うことができます。
この文書では、本製品とOnSheetサーバーの連携について説明します。
OnSheetとは
OnSheetとはインフォテリア社によって提供されるWebブラウザ上で利用可能なスプレッドシートサーバーです。Excelのような表計算インターフェイスで、ワークシートの作成から管理までWebブラウザのみで行える環境を提供します。
製品体系としては、パッケージ版とネットサービス版の2種類があります。
- パッケージ版(ASTERIA Spreadsheet Server OnSheet)
サーバー製品として企業に導入される製品です。
企業で管理するサーバーにインストールし、それを企業専用のスプレッドシートサーバーとして利用します。 - ネットサービス版(onsheet.net)
インターネット上で提供するネットサービスです。
法人ユーザーと個人ユーザーでの利用形態があり、個人ユーザーはアカウントを取得するだけで誰でも無償でその日からOnSheetの機能が体験することができます。
本製品は、パッケージ版のスプレッドシートサーバーとのみ連携可能です。
OnSheetではパッケージ版のみWebAPIが提供されており、本製品はWebAPIを利用してOnSheetとの連携を実現しています。
OnSheetの特徴
OnSheetの特徴について以下に簡単に説明します。詳細については、OnSheet製品のWebサイトをご参照ください。
- Excelライクなユーザーインターフェイス
基本的な表計算の機能はExcelを使用したことのある人であれば違和感なく使用することが可能です。 - ユーザーとアクセス権の管理
ユーザーの個人ワークスペースにワークシートを作成します。作成したワークシートには他のユーザーからのアクセス権を設定することができます。また、ワークスペースを作成することでグループ間で同一ワークシートを共有することができます。 - Excelインポート/エクスポート
Excelファイルをインポートすることによりワークシートを作成したり、ワークシートをExcelファイルとしてエクスポートしたりすることができます。 - グラフ
任意のセルにある情報を元にさまざまなグラフを作成することができます。 - 発行機能
作成したデータやグラフにはすべてパーマリンクが生成されるので任意のHTMLの中に簡単に埋め込むことができます。 - バージョン管理
作成したワークシートの履歴はすべて自動でサイクリックに管理されます。また、明示的な履歴を残すことができます。
本製品との連携では、以下の機能を使用します。
- WebAPI
WebAPIによって外部からワークシートの内容を取得したり変更したりすることができます。 - ボタン機能
ワークシート上にボタンを配置してクリック時に任意のHTTPリクエストを発行することができます。
フローサービスとOnSheetの連携
フローサービスと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ベースのシステムに比べてはるかにエンドユーザーの自由度が高い
というメリットがあります。
もちろん通常の社内共有スプレッドシートサーバーとして活用することも可能です。