Topへ↓

とある案件でRICOH kintone plusを使ったkintoneの構築を行っています。
RICOH kintone plusといえば、RICOH社によるkinotneです。サイボウズ社が提供するkintoneとの違いは、RICOH社の複合機との連携機能が標準で搭載されていることに加え、いくつかのプラグインが無償でついてきます。(サービスサイト
RICOH kintone plusに付属するプラグイン一覧
本稿では、これらのプラグインのうち、RICOH 帳票作成プラグインに焦点を当てて説明します。

kintoneを取り巻くパートナー企業やサービス、プラグインの集合を意味する概念であるエコシステムには多くの帳票発行サービスがあります。弊社はこれまで、お客様のニーズに合わせて様々な帳票発行プラグインを導入し、帳票の出力を可能にしてきました。
ところが、RICOH 帳票作成プラグインは今まで培ったやり方が通用しないところがありました。
RICOH 帳票作成プラグインを使いこなすにあたり、苦戦したポイントとその攻略法を共有しておいた方がよいと思います。この先も苦労されるであろうユーザーさんのためにも。


2.認証の設定

  Topへ↑

本稿はRICOH kintone plusの申し込みは既に終わっている想定です。
該当するサブドメインにアクセスし、kintoneシステム管理→プラグインに移動すると、RICOH kintone plusで提供されるプラグインがインストールされています。

この中のRICOH 帳票作成プラグインが本項で取り扱う対象のプラグインです。

RICOH kintone plusで各種のプラグインを使うには、EMPOWERING DIGITAL WORKPLACESにアカウントを作成する必要があります。EMPOWERING DIGITAL WORKPLACESとはRICOH社のクラウドサービスの総称といえばよいでしょうか。(サービスサイト)

これが少し厄介です。導入後、まず初めての一回だけ、上の画像を参考にアカウントを設定する必要があります。
出典元はこちらのサイトです。

さらに、RICOH kintone plusに必ずアプリとして入ってくるRICOH EDW認証アプリにRICOH EDW認証プラグインを設定します。

上の画像を参考にしてください。
出典元はこちらのサイトです。

ここで登録したユーザーは、kintoneのアカウントごとに認証が必要です。
帳票を出力する対象のアプリから出力する際、Aというアカウントで出力したあと、Bというアカウントで出力する際にRICOH EDW認証アプリを開いてユーザー認証を行う必要があります。その後Aというアカウントで出力する際にRICOH EDW認証アプリからユーザー認証をやり直す必要があります。
複数アカウントから同じアプリの帳票を出す際にはこのユーザー認証の手間が入りますので、ご注意ください。

3.ひな型の作成にあたっての問題

  Topへ↑

RICOH 帳票作成プラグインはkintoneからExcelファイルが出力できるプラグインです。
事前にRICOH kintone plusに帳票ひな型管理アプリを作成し(マニュアル)、Excelファイルをテンプレートとして帳票ひな型管理アプリに登録する必要があります。
kintoneからExcel帳票を出せるプラグインとしては、RepotoneU ExcelやRepotoneU Proがよく知られています(製品サイト)。RepotoneUで帳票の設定方法はkintoneアプリのプラグイン設定画面より、画面上に再現されたセルにkintoneの項目をマッピングしていくやり方です。

一方、RICOH 帳票作成プラグインは事前にテンプレートとなるExcelのセルに疑似関数のような文字列(${フィールドコード})を埋め込んでおきます。
するとRICOH 帳票作成プラグインが出力のタイミングで動的にセルに値を埋め込んでくれる仕様です。
単純なセルのマッピングであれば、このやり方で困ることはそうありません。

が、テーブルを出力しようとした場合、途端に苦しくなります。

kintoneからExcelで出力できるいくつかのプラグインのうち、gusuku Customine(製品サイト)のExcel出力の設定方法も似たようなやり方を採用しています。Excelのセルに疑似関数のような文字列($(フィールドコード))を埋め込んでおくことで任意のフィールドの値を帳票に出力できます。

ただし、gusuku CustomineのExcel出力の場合、テーブルを出力する際にさまざまな関数が用意されています。あまり困りません。$FOREACH~$ENDを使ってもよいですし、SLICE関数を使えば途中の行も切り出すこともできます。$(テーブルのフィールドコード)(行番号)(テーブル内のフィールドコード)で行単位で出力もできます。(CustomineでExcel出力 / PDF出力を試してみよう)(リファレンスマニュアル)

ところが、RICOH 帳票作成プラグインでテーブルを出力する際は、工夫を加えないと途方にくれます。

RICOH 帳票作成プラグインはこの図のようにテーブルの先頭行のセルに${テーブルのフィールドコード.テーブル内のフィールドコード}を入力します。
その際、マニュアルを読む限りでは、一部の行だけを出すことができないようです。つまり、kintoneのテーブル側で行数に上限を設けておかないと、帳票側は最大で5000行が出力されてしまいます。

さらに、別の重要な問題が存在します。
それはRICOH 帳票作成プラグインがテーブルを出力する際、自動的に行を挿入する仕様になっていることです。しかもセル範囲の行だけを自動挿入するのではなく、行全体を自動する仕様になっています。

例を挙げると、kintone側のアプリのテーブルがこのようになっていたとします。



すると、仮に帳票側でV列とW列にテーブルの内容を出力しようとした場合、このようにテンプレートファイルを設定する必要があります。

ところが、これを帳票として該当するアプリから出力すると、このような結果になってしまいます。A列からT列に同じ情報が2行入っていますね。つまり、行ごとコピーしているため、関係のないA列からT列にも同じ情報がコピーされてしまうのです。

しかも、これが左右に別々のテーブルが並ぶとさらにまずい状態になってしまいます。例えば、この状態の複数のテーブルに3行と2行をそれぞれ入力し、テンプレートの左右にそれぞれのテーブルを並べるとします。


すると結果はこうなってしまいます。V列とW列は2倍になってしまいますし、Y列とZ列は2倍になってしまいます。A列からT列は6行コピーされます。つまり、3行×2行で6行がコピーされてしまうのです。
これをどうするか。私がこの問題に気づいたとき、お客様の帳票では左右に別々のテーブルの値を出す必要がありました。相互に掛け合って行数が増えてしまう状態ではとても本番運用に乗せられません。

あと一つの問題は、SUM関数をどうするかです。行数が動的に増えるということは、SUM関数で設定したセル範囲も変わってしまう可能性があります。この問題をどうすれば解消できるか。
また、もう一つ重要な問題があります。それはセルに設定した関数が動作しないことです。
関数をセルに設定した状態のテンプレートを登録し、その登録されたテンプレートを基に該当のアプリで帳票発行を行うと計算がされない。そのような問題が起きたのです。
通常であればExcelのセルに設定した関数を計算する場合、F9キーを押すかShift+F9キーを押せば再計算されるはず。ところが再計算がされません。
再計算させるにはF2キーでセルを編集し、Enterキーを押す必要がありました。でも、お客様に関数が設定されたすべてのセルを一つ一つ選択してもらい、F2キーを押してもらうことなどできるわけがありません。
再計算がされない問題を解消しないと運用に回せません。ここはかなり頭を悩ませました。再計算の問題だけではありません。テーブル行数や関数の範囲が変動する問題、左右に配置したテーブルが相互に掛けあってしまう問題など、実運用までは課題が山積みでした。

4.問題の解決にVBA

  Topへ↑

結論から言うと、VBA(Visual Basic for Applications)を活用し、上記の問題を全て解決しました。

Excelはマクロなしのブック(拡張子がxlsx)とマクロありのブック(拡張子がxlsm)があります。
RICOH kintone plusに作成した帳票ひな型管理アプリにはどちらの拡張子のExcelブックも登録することができます(RepotoneU Excel/Proでも可能です)。

帳票ひな型管理アプリにマクロありのブックを登録します。ユーザーはkintoneの該当アプリからExcel帳票を発行し、発行されると添付ファイルフィールドに添付されます。ユーザーはそこからダウンロードし、Excelブックを開きます。その瞬間にマクロが動作するようなVBAマクロを事前に設定しておくのです。
つまり、帳票ひな型管理アプリに登録する時点でマクロ付きのブックとして登録することです。
そのマクロの中で上記の諸問題が解消するようにしておけばよいのです。

ただし、ここでもう二点、Excelマクロを動作させるために注意しておくべきことがあります。
・ユーザーには必ずダウンロードし、インストール版でかつ最新版(2016以降であれば安心)のExcelで開いていただく。Office 365やMicrosoft 365などのブラウザでは動かさないようにお伝えする。
・kintoneからダウンロードしたExcelブックは信頼できるサイトからのファイルではないため、kintoneを使っているブラウザ上で信頼できるサイトに登録していただく必要があります。
やり方は、インターネットからのマクロは、Office で既定でブロックされますの記事に詳細が載っています。下記画像もご確認ください。あと、すみません、Macでは同様の問題が起こるのかどうかは分かりません。

さて、準備が整いました。
それぞれの問題の解消方法をざっくり記します。

まずは再計算です。ExcelのVBAにはApplication.Calculateという再計算を行うメソッドがあります。ところがVBAの中でApplication.Calculateを実行しても再計算はされません。ということは他の方法を試す必要があります。
解決策として以下のようにFormula2R1C1で再度該当セルに関数を埋め込み、Application.Calculateで再計算させました(上の関数は10列左のセルの〇年〇月〇日をyyyy/mm/ddの形式に変えた上で曜日に切り替えています)。

.Sheets("test").Cells(3, 11).Formula2R1C1 = _
"=SWITCH(WEEKDAY(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RC[-10],""年"",""/""),""月"",""/""),""日"","""")),1,""日"",2,""月"",3,""火"",4,""水"",5,""木"",6,""金"",7,""土"")"
.Sheets("test").Cells(54, 22).Formula2R1C1 = _
"=IF(ISNUMBER(R[1]C[-13]),R[1]C[-13],0)"
Application.Calculate

続いてテーブル行数の問題です。
これはテーブルごとに別シートを用意することで解決しました。別シートごとであれば何千行になろうとも問題は生じません。RICOH 帳票作成プラグインで扱えるテンプレートは複数シートの対応が可能です。複数シートに任意の関数を設定すれば値が設定されます。
テーブルごとに別シートで設定することにより。左右に配置したテーブルが相互に掛けあって不要なコピーが行われる問題も解消できました。
また、セル内に設置する関数のセル範囲が不明な点については関数にする必要がなく、VBAで設定すれば大丈夫です。(挿入されることを見越してセル範囲を多めに設定しておくことで参照範囲の問題は早い時点で解消できていましたが、再計算がされないことには変わりなかったので)
例えばセルの下端行は以下のようにVBAで設定できます。

.Cells(.Cells.Rows.Count, 1).End(xlUp).Row

なお、該当のテンプレートブックに設定するVBAマクロは、

Private Sub Workbook_Open()

を利用しました。ただし、このサブルーチンはテンプレートブックを修正するたびに処理が走り、値が転記されてしまいます。その状態で帳票ひな型管理アプリにセットすると意図しない形になってしまいます。ここはお気を付けてください。

Private Sub Worksheet_Activate()
End Sub

のようにシート単位で処理が走るようにしても良いかもしれません。

5.他の運用上のご注意

  Topへ↑

他にも、RICOH 帳票作成プラグインを活用する上ではいくつかの注意点があります。
上に書いた通り、帳票ひな型管理アプリに設定を追加する際、帳票を出力するアプリも指定します。
その結果、一つのアプリで複数種類の帳票を出す場合には帳票ひな型管理アプリに複数レコードを登録します。
ただし、その結果でもアプリにボタンは一つだけしか表示されません。そのボタンを押下することで複数の帳票を選べるダイアログが出る仕組みです。

ところが、出力された結果が格納される添付ファイルフィールドは一つしか選べない仕様です。
つまり、複数種類の帳票を一つのアプリから出すには帳票発行の運用上の工夫が必要です。そうしないと現場で混乱を招く恐れがあります。

本稿で書いたことは、RICOH 帳票作成プラグインの今後のバージョンアップで改善されていくはずです。RICOH kintone plusもまだまだ改善されていくことでしょう。
本稿で触れた制約をさしおいても、RICOH kintone plusを使うと複合機との連動以外にも複数のプラグインが追加費用無しで最初から使えることは魅力です。から。
ただし、現時点では本項に書いたような運用上の制約次項が発生することだけはご注意ください。特に、RICOH 帳票作成プラグインについてはVBAマクロによるカスタマイズが必須になるはずです。その点を注意してもらえればと思います。

本稿がRICOH 帳票作成プラグインを使う方々にとってご参考になれば幸いです。


コメントを残して頂けると嬉しいです

Case Of Akvabitの全投稿一覧