Docurain Labo

Docurainサービス開発日記

Power Automate DesktopとDocurainはもちろん連携できます

[忙しい方向け]
MSのRPAであっても依然として苦手*1な「帳票」はDocurainと連携することで簡単に解決できます!




本日(日本時間2021年3月3日)より、Windows 10 を利用しているユーザーは追加費用なく個人レベルでのデスクトップ操作を自動化させるためにPower Automate Desktop が利用可能となりました。

このPower Automate Desktopから、Docurain APIを利用して帳票を作成できることを確認しました!

以降の手順は、Power Platform(Power Apps、Power Automate)を利用できることが前提です。 Power Platform の利用開始についてはこちらのOffice 365 E3へサインアップを参考にしてください。 (引用: Windows 10 さえあれば追加費用なくPower Automate Desktop を使ってタスクや業務の自動化が可能に - 吉田の備忘録)))

flow.microsoft.com

早速やってみよう

*windows10上での手順です

Power Automate Desktop セットアップ

Power Automate Desktop をダウンロードし、インストーラを起動します。

  • インストール

    指示に従ってインストールを進めます。

    https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-12.19.43.png https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-12.20.02.png https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-12.20.18-1.png https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-12.23.57.png https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-13.44.18.png

  • Power Automate Desktop 起動

    https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-13.44.18-1.png

    起動後にログインを求められるのでMicrosoftアカウントでログイン

    以上でセットアップ完了です。

デスクトップフローでデータ作成を自動化

Power Automate Desktopではデスクトップフローと呼ばれるローカル端末のあらゆる操作を自動化できます。

docs.microsoft.com

今回はこのデスクトップフローで端末上にある2つのデータ(Excel)を1つのデータにまとめ、そのデータとテンプレートファイルを元にDocurainのAPIにリクエストして帳票を作成します。

  • 新しくフローを作成

    https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-14.59.56.png

    https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-15.00.16.png

  • 取引先情報、注文情報の2つのファイルを1つにまとめます。

    取引先情報 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-20.45.14.png

    注文情報 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-20.44.24.png

  • デスクトップフローを作成し、取引先情報と注文情報をまとめたデータを保存します。
    *今回はデスクトップフローでDocurain連携についてのご紹介のため、データをまとめるフローについては詳細は省略します https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-21.07.35.png

  • デスクトップフローを実行し、データを作成します

    注文情報に顧客情報を追加したものです https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-21.18.50.png

Docurain連携

テンプレートはごく単純な請求書です。 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-21.35.11.png

デスクトップフローからDocurainと連携するには1つのフローを追加するだけ

システムタブ内にあるPowerShellスクリプトの実行をフローに追加して、curlでDocurainのレンダリングAPIへのリクエストを行いレスポンスをファイルに保存します。 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-21.25.38-1.png

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-21.46.19.png

以下のようなコードを記述しています。 *こちらはサンプルです

curl.exe -X POST https://api.docurain.jp/api/instant/pdf
  -H 'Authorization:token [トークン]'
  -H 'Content-Type:multipart/form-data'
  -F 'template=@template.xlsx;type= application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  -F 'entity=@data.xlsx;type= application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  -o output.pdf

最後に追加したら、フローを実行してみましょう。 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-21.56.20_2.png

上記のcurlで指定したパスでPDFが出力されました。 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/03/スクリーンショット-2021-03-03-22.01.07.png

Power Automate Desktop x Docurainでできること

デスクトップフローでは、端末のあらゆる操作が可能ですので、もっと複雑なデータを結合させたりすることも可能です。

また、Docurain連携を行い帳票を出力した後、任意のオンラインストレージにアップしたりメールに添付することも可能です。

単純だけど面倒な作業はどんどん自動化して、重要な業務に集中しましょう!

他にも様々な機能がありますので、ぜひアカウント無料登録してマニュアルを参照しお試しください。

*1: 細かいレイアウト指定や大量出力を想定しています

異体字セレクタも出力可能です

以前、Docurainが「外字」に対応済みであることをお知らせしましたが、Docurainは異体字セレクタ(IVS)にも対応*1しました。

blog.docurain.jp

異体字セレクタ(IVS)とは

Ideographic Variation Sequence(異体字シーケンス)の略称で、異体字の関係に
ある文字に「異体字セレクタ」(VS / Variation Selector)というコード(枝番号)
を振ることで、より確実な文字情報の交換を可能にする技術のこと

ja.wikipedia.org

使用例

例えば、「尊」の異体字である

は対応するセルのフォントをIPAmj明朝にした上で、以下のようなJSONで表示できます。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-19.06.11.png{ "str": "尊\uDB40\uDD04" } または { "str": "尊\\U+E0104" }

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-19.05.11.png{ "str": "尊\uDB40\uDD05" } または { "str": "尊\\U+E0105" }

Docurain独自の記述方法

上記 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-19.06.11.png のIVS(右側)について、本来であれば

{ "str": "尊\U+E0104" }

\(バックスラッシュ)は一つになるべきですが(実際これでもDocurainでは動きますが)、これはJSONエディタではエラーに判別され開発時に扱いづらいため、独自に { "str": "尊\\U+E0103" } でも受付可能にしました。

異体字セレクタ(IVS)のデータで出力してみよう

テンプレート・JSONは以下のように作成しています。
サンプルはこちらからダウンロードできます。

  • テンプレート https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-13-15.25.17.png

  • JSON(IVSで記述)

{
  "str1": "\\U+E0103",
  "str2": "\\U+E0104",
  "str3": "\\U+E0105",
  "str4": "\\U+E0101",
  "str5": "\\U+E0100",
  "str6": "\\U+E0103",
  "str7": "\\U+E0101",
  ...省略...
}

出力結果は以下のようになります。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-13-15.34.50.png

問題なく出力されていますね。

IPAmj明朝の文字一覧に存在するIVSの1万1,382文字は全て検証済みで出力可能です!

異体字セレクタ込みの文字列操作も簡単に

サロゲートペアを扱ったことがある方でしたらご存じの通り、 サロゲートペアが含まれた文字列は、もはや通常の「文字列」として扱うことができません。 なぜなら、サロゲートペアは「2文字で『1文字』を表す」という特殊な文字だからです。

例えば🍣や🍺はサロゲートペアです。なので、

"🍣と🍺".length

とJavascriptで実行すると、3ではなく5が返ってくるあたりで辛さがわかると思います。

先頭の1文字を切り取ろうとして、

"🍣と🍺".substring(0, 1)

とやると、"�"という壊れた文字が返ってくる*2わけです。ましてや、IVS文字は「3文字で『1文字』を表す」という世界なので、例えば

"🍣と🍺と䄂\uDB40\uDD01".length

9になるわけです。表示結果は5文字*3なのに。辛い。

そこでDocurainでは、ユニコード専用の文字列操作を用意しています。 JSONで送ったデータの文字列オブジェクトのメソッドとして呼び出すことができます。

関数名 説明
u_length ユニコードを考慮した文字列長を返す。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする。例えば"🍣と🍺と䄂\uDB40\uDD01"の長さは5とカウントする。
u_charAt(int index) ユニコードを考慮した文字取得メソッド。オリジナルのString#charAtとは異なり、このメソッドの戻り値は「1文字」を表す文字列になる。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする
u_toCharArray() ユニコードを考慮して文字列を文字に分解する。オリジナルのString#toCharArrayとは異なり、このメソッドの戻り値は「1文字」を表す文字列の配列になる。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする。
例えば`'🍣と䄂\uDB40\uDD01'`.u_toCharArray()の結果は["🍣","と","䄂\uDB40\uDD01"]になる
u_substring(int from), u_substring(int from, int to) ユニコードを考慮した部分文字列取得メソッド。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする
u_hasIVS() 異体字セレクタを含む文字列か判定する
u_removeIVS() 異体字セレクタを除去して通常の字体のみにする

最低限必要なものは用意しましたが、不足がありましたら随時追加していきます。



今回作成したサンプルは、無料トライアルページからも登録不要で試してみることが出来ます。 外字・異体字を扱う帳票の作成・出力が必要な際はぜひ試してみてください!

他にも様々な機能がありますので、ぜひアカウント無料登録してマニュアルを参照しお試しください。

*1:「対応しました」というか、元々IVSは対応済みだったのですが、完全対応済みであることを改めて検証しました

*2:サロゲートペアを構成する2文字の先頭の1文字だけを切り取っているから

*3:正確には「グリフ5個が表示される」

pptxテンプレート機能をリリースしました

本日は、非常に大きな機能追加をお知らせします💪


pptxでテンプレートを記述して*1新たにpptxを生成したり、Excelのテンプレートにpptxテンプレートを埋め込んで、動的な図形を出力することが可能になりました。

Excelに埋め込む*2場合、pptxファイルをOLEで埋め込むと画像として最終結果へ出力されます。

しかも、画像はベクターグラフィック形式*3のため、ピクセルパーフェクトな図表として埋め込まれる仕様です。



帳票に複雑な図表を入れることは多々あると思いますが、Excel上でこれを実現するとなると、かなり面倒ですよね...

それが、Docurainでpptxを使えるようになったため、ずっと簡単に複雑な図表を動的に差し込むことができるようになりました!

早速試してみよう!

まずpptxを作成します。

今回は以下のようなpptxを考えてみます。

サンプル(pptx,xlsx,json)のダウンロードはこちらです

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-14.58.20.png

  • テストの点数を横棒チャートで表示する
  • 点数に応じて横棒の長さが可変
  • 横棒のテキストで点数も表示する(「80点」のように)
  • 科目数は可変、1科目~4科目の任意

シェイプの表示非表示を制御する

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-14.58.47.png

棒チャートの2つのシェイプ(科目名表示部と棒チャート)をグループ化し、 グループ化されたシェイプに対して代替テキストで

#if(!%{科目4名称}) #REMOVE #end

と指定します。すると、 科目4名称が無ければこのシェイプを削除する という意味になります。

シェイプの大きさを可変にする

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-14.58.55.png

棒チャートの長さを点数に応じて可変にするため、棒チャートの代替テキストに以下のように指定します。

#SCALE(`%{科目4点数} / 100.0`, 1)

%{科目1点数} / 100.0は、マクロ#SCALE(number, number)を用いてシェイプの長さを動的に変更する指定について、 第一引数であるx軸方向の縮尺を計算する指示です。ここでは式リテラルを用いて簡潔に表現しています。

なお、100ではなく100.0なのは、整数と整数の除算結果は整数になる仕様のため、50/100 = 0ではなく50/100.0 = 0.5としたいためです。

JSONの用意

データのJSONを用意します。以下の通りです。

{
  "科目1名称": "算数",
  "科目1点数": 95,
  "科目2名称": "国語",
  "科目2点数": 70,
  "科目3名称": "理科",
  "科目3点数": 85
}

以上でpptxとデータの準備ができましたので、まずはこのpptxをテンプレートとして出力してみます。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-14.41.41.png

データの通りシェイプや文字列が出力されましたね!

これでデータに基づいた動的な図を作成できました。

Excelテンプレートにpptxを埋め込む

次にExcelテンプレートを作成し、pptxを埋め込んで出力してみましょう。

[挿入]タブ -> [テキスト]グループ -> [オブジェクト] で↑で作成したpptxを選択し埋め込みます。 https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-15.08.26.png

以下のようなExcelとなります。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-14.43.44.png

このExcelテンプレート用にJSONを用意します。以下の通りです。

{
    "年度": 2,
    "学年": 5,
    "クラス": 1,
    "児童名": "佐藤 太郎",
    "科目1名称": "算数",
    "科目1点数": 95,
    "科目2名称": "国語",
    "科目2点数": 70,
    "科目3名称": "理科",
    "科目3点数": 85,
    "科目4名称": "社会",
    "科目4点数": 68
}

出力してみると...

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2021/01/スクリーンショット-2021-01-12-14.45.02.png

問題なく出力されましたね。 図の変更時もpptxを編集して挿入し直すだけなので簡単にできます。

このPowerPointテンプレート・Excelへのpptx埋め込みにつきまして詳細はマニュアルもございますので、そちらも参照ください。(ログイン要)

今回作成したサンプルを、こちらのページからも登録不要で試してみることが出来ますので、気になったらぜひ試してみて下さい。

他にも様々な機能がありますので、アカウント無料登録してマニュアルを参照のうえお試しください。

*1:*.ppt形式は使用できません

*2:pptxを埋め込めるのはxlsxのみです

*3:具体的にはSVGです

わかりやすいテンプレートのために - 番号付き省略記法のご紹介

新年あけましておめでとうございます。 今年もDocurainは開発者の皆様をラクにする、便利な機能をどんどん開発していきます!

さて、本日は「番号付き省略記法」のご紹介です。

以前、省略記法を紹介しました。

今回はその省略記法で同時に複数のコンテキスト(省略記法の起点となるオブジェクト) を設定できるようにした番号付き省略記法を紹介します。

{
  "先月": {
    "売上": 1234,
    "来客数": 123
  },
  "今月": {
    "売上": 5678,
    "来客数": 456
  }
}

上記のようなJSONがある場合、テンプレート側で

#with(%{先月})

としてJSONの先月#WITH or #withの引数に指定すると、以下のように簡潔な書き方で参照できるようなります。

https://docurain.jp/wp/wp-content/uploads/2020/11/スクリーンショット-2020-11-05-11.14.34.png

これが省略記法です。

ただし、コンテキストを「先月」にすると、「今月」の売上は%{売上}では参照できないため

https://docurain.jp/wp/wp-content/uploads/2020/11/スクリーンショット-2020-11-05-11.15.35.png

のように書くことになります。

このようなケースで使えるのが番号付き省略記法です。

#with(%{先月})
#with2(%{今月})

とすることで

先月の売上は%{売上}、今月の売上は%2{売上}です

のように参照することが可能です。なお、番号は1から9まで使用できます。

https://docurain.jp/wp/wp-content/uploads/2020/11/スクリーンショット-2020-11-05-11.17.15.png

#with2で指定したオブジェクトは%2{XXXX}のように
#with3で指定したオブジェクトは%3{XXXX}のように
記述が可能になります。*1

このようにテンプレートを分かりやすく簡潔にするための機能も随時追加しております。

テンプレートは最大限シンプルにしていきましょう!

他にも様々な機能がありますので、ぜひアカウント無料登録してマニュアルを参照のうえ、お試しください。

*1:番号は1から9まで指定可能です。0は無指定と同義です。すなわち#with0(...)と#with(...)は同じです。

令和の時代は帳票も絵文字で圧倒的成長☝😉✨✨✨

注:この記事は本来、昨年前半に公開予定でしたが、管理上の都合で公開が遅れました。(忘れていたとも言う)

要約

  • 令和元号に対応しています
  • サロゲートペアに対応しています

どちらも4月の段階では対応していましたが、諸事情あって(主に筆者の遅筆により)報告が遅れてしまいました…。

新元号

PDF出力の場合、Excelの書式設定で和暦を設定すると、2019年5月1日以降は「令和」の元号で表示されます。Excel出力の場合はクライアント側にインストールされているExcelの環境に依存しますが、アップデートが適用されていればすでに対応済みになっているはずです。

forest.watch.impress.co.jp

サロゲートペア対応

Docurainでは当初、サロゲートペアには対応しておりませんでしたが、今は完全対応しています。サロゲートペアで表現されている日本語文字としては、JIS第3・第4水準の漢字の一部が該当しまが、これらはすべてDocurainから出力可能であることを確認済みです。

www13.plala.or.jp

www13.plala.or.jp

JIS第3・第4水準の漢字は人名や一部住所で用いられておりますが、Docurainであればそれらを含む帳票も文字化けやエラーを発生させることなく出力可能です。

そしてサロゲートペアに対応したということは…。絵文字も表示できるということです!今回は試しに適当な帳票として報告書(日報)を作成して新しい機能を試してみます。

作成したテンプレート

いきなりですが完成した帳票がこれです。

f:id:withpop:20190528140344p:plain

どうってことない帳票です。このくらいの帳票であれば、頑張れば10分かそこらで作成できると思います。右下にはよくあるような承認欄を設けてみました。テキスト(名字など)を入力する想定ですが、Docurainでは画像も差し込むことができるので印影を挿入することも可能です。

使用するデータ

データは以下のような感じです。とりあえず絵文字をふんだんに使ってみました。

{
    "date": "2019-05-27",
    "reporter": "超票 太郎",
    "division": "営業2課",
    "summary": "いっけなーい 🔪殺意殺意 💦私、帳票開発エンジニア😘入り組んだ罫線を見ると正気を保てなくなるの✨\nでもある日、「ここに備考欄追加してよ、すぐできるでしょ?」とか言われてもう大変 😢 \n簡単にできると思ってるならまずは自分でやってみなよ 👆💕 \n\n次回「やっぱり元に戻しておいてくれる?」お楽しみに❤️",
    "detail": [
        {"time": "2019-05-27T09:00", "description": "な、なに?😧"},
        {"time": "2019-05-27T10:00", "description": "「帳票開発は大変」だと?😨"},
        {"time": "2019-05-27T11:30", "description": "ふ、ふざけるな✊😡 💢💢"},
        {"time": "2019-05-27T14:00", "description": "Docurainなら日本人好みの罫線の多い帳票もExcelで簡単に作成できます✋😤🙅"},
        {"time": "2019-05-27T16:00", "description": "「面倒くさい帳票開発をサクっと済ませる」で、“圧倒的成長\"✋😤😤😤"},
        {"time": "2019-05-27T18:00", "description": "だれもやりたくない作業から開放させて楽しいビジネスに集中させてくれるサービスに圧倒的感謝☝😉✨✨✨"}
    ],

    "comment": "太郎ちゃん、お疲れ様✨✨✨❤\nブチョーはお昼ご飯を食べに来てるョ😘😘\n帳票開発は大変😨😨だけど太郎チャンはしっかり仕事してる📃からボクも鼻が高いよ😚😚😚\nこれからもがんばってね☝😉✨✨✨",

    "tanto": "😆",
    "kakaricho": "😉",
    "kacho": "😍",
    "bucho": "😨"
}

日時も令和の日付を指定してみました。

出力結果

f:id:withpop:20190528151506p:plain

ちゃんと出力されていますね。ただし、絵文字は独自のグリフになっております。ここは諦めてください。

セルの結合を簡単に行えるようにしました

リスト・一覧形式の帳票では以下のように分類ごとにセルを結合・マージさせたいことがあります。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2020/11/2160.png

その際にDocurainでは簡単に分類ごとの枠(セル)を結合することが可能です。

#MERGE_CELL([キー])#MC([キー])を使用します。
#MC#MERGE_CELLのエイリアスです)
引数は、結合するセルのグループを指定するための一意のキーです。

早速試してみます

サンプルのテンプレートとデータ(JSON)です。

ダウンロード

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2020/11/スクリーンショット-2020-11-04-13.24.23.png

[
  {
    "name": "食料品",
    "items": [
      {
        "name": "肉類",
        "items": [
          { "name": "輸入牛肉", "amount": 1 },
          { "name": "和牛", "amount": 2 }
        ]
      },
      {
        "name": "肉類",
        "items": [
          { "name": "ブロイラー", "amount": 1 },
          { "name": "地鶏", "amount": 2 }
        ]
      },
      ..中略..
    ]
  },
  ..中略..
  {
    "name": "雑貨",
    "items": [
      {
        "name": "電池",
        "items": [
          { "name": "単1", "amount": 1 },
          { "name": "単2", "amount": 2 },
          { "name": "単3", "amount": 3 }
        ]
      }
    ]
  }
]

出力結果は以下の通りです。
同じ分類名の場合に該当のエリア(セル)がマージされていますね。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2020/11/スクリーンショット-2020-11-04-11.44.37.png

また以下のような書き方も可能です。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2020/11/スクリーンショット-2020-11-04-13.33.10.png

このように引数無しの場合、セルの値そのものが引数として扱われます。
セルに出力させたい値とキーが同じ場合はこちらの書き方の方が簡潔で分かりやすいですね。 出力結果は↑と同様じです。

大項目は異なるが中項目は同一の場合

このJSONのように大項目は異なるが中項目は同一の場合もあります。

JSONダウンロード

[
  {
    "name": "",
    "items": [
      {
        "name": "A1",
        ..中略..
      },
    ]
  },
  {
    "name": "",
    "items": [
      {
        "name": "A1",
        ..中略..
      }
    ]
  }
]

先ほどと同じテンプレートで出力するとこのようになります。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2020/11/スクリーンショット-2020-11-04-12.59.01.png

大項目が異なる場合に中項目が同じでも枠を分割させたい場合は、
中項目の#MERGE_CELL or #MCの引数に大項目の値も含めます。
例): #MERGE_CELL(`$catL.name+$catM.name`) $catM.name

修正版テンプレートダウンロード

これにより以下のような出力結果となります。
中項目が同じでも枠が分割されてますね。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2020/11/スクリーンショット-2020-11-04-13.05.58.png

分類ごとに枠をマージさせるような帳票出力が必要な場合は、 今回作成したサンプル帳票を、こちらのページからも登録不要で試してみることが出来ますので、気になったらぜひ試してみて下さい。

他にも様々な機能がありますので、アカウント無料登録してマニュアルを参照のうえお試しください。

わかりやすいテンプレートのために - IF / IFS / SWITCHのご紹介

今回は条件分岐がシンプルに書けるようになったIF / IFS / SWITCHをご紹介します。

従来の条件分岐

従来はセル内で条件分岐をさせて値を出力する場合に

#if($cond) $a #end
#if($cond) $a #else $b #end
#if($cond1) $a #elseif($cond2) $b #elseif($cond3) $c #else $d #end

のように書かなければならず、少し面倒でした。

プログラマの美徳は怠惰。というわけで、より簡潔な表現のためにExcelの関数(IF / IFS / SWITCH)とほぼ同等の記述を可能にしました。 それが #IF / #IFS / #SWITCH マクロです。

#IF / #IFS / #SWITCH

上記の通り、Excelの関数(IF / IFS / SWITCH)と類似の記法・動作になっています。

概要は次の通りです。

#IF

従来の書き方(#if) #IF
#if($cond)

#end
#IF($cond, 'A')
#if($cond)

#else

#end
#IF($cond, 'A', 'B')

#IFS

従来の書き方(#if) #IFS
#if($cond1)

#elseif($cond2)

#elseif($cond3)

#end
#IFS([$cond1, 'A', $cond2, 'B', $cond3, 'C'])
#if($cond1)

#elseif($cond2)

#elseif($cond3)

#else

#end
#IFS([$cond1, 'A', $cond2, 'B', $cond3, 'C'], 'D')

#SWITCH

従来の書き方(#if) #SWITCH
#if($val == 1)

#elseif($val == 2)

#elseif($val == 3)

#else

#end
#SWITCH($val, [1, 'A', 2, 'B', 3, 'C'], 'D')

詳細はDocurainのマニュアル 帳票作成マニュアル(条件分岐支援) をご参照ください。

実際に使うとこんな感じです。

https://s3.ap-northeast-1.amazonaws.com/site.docurain.jp/blog/2020/09/スクリーンショット-2020-09-09-12.41.02.png

このようにセル内がスッキリして、テンプレートが読みやすくなりました。

帳票はただでさえ複雑な物が多いですし...

テンプレートは最大限単純にしておきたいものです!

他にも様々な機能がありますので、ぜひアカウント無料登録してマニュアルを参照しお試しください。