プリントクリエイターにムリをさせてみた(kintone Café JAPAN 2019 ゴチャまぜ企画!プリント番外編)

この記事の概要

★この記事は「kintone Advent Calendar 2019」の9日目の記事です。

みなさんこんにちは。プロジェクト・アスノートの松田です。

先日行われた Cybozu Days 大阪!その翌日の2019年12月7日土曜日に、サイボウズ大阪オフィスで行われた、kintoneの勉強会コミュニティー「kintone Café JAPAN 2019」。
 
そこでわたしは「ゴチャまぜ企画!プリント編」のモデレーターを務めさせていただきました。
 
kintoneに機能を付加する連携サービスの中で、カレンダー系と並んで定番的に使われているのが帳票系の連携サービス。
今回は帳票系連携サービスを提供されている3社に集まっていただき、会場からの意見やコメントも取り上げながら「使う人の視点」でいろいろな話を聞かせていただくというセッションでした。
 
  • Repotone Uシリーズ(ソウルウェア) 
  • プリントクリエイター(トヨクモ)
  • ドキュトーン(オプロ)
 
kintone Café JAPANのセッションでは、基本的な機能についてや、各製品の得意なところ苦手なところを、愛を持ってオープンに議論することができたのかなと思っています。
 
この記事ではその番外編として、われわれを悩ませる鬼帳票を攻略するために、プリントクリエイターに登場いただき、kintone カスタマイズ と合わせて攻略を進めていきたいと思います。
 

今回とりあげた鬼帳票はこれ

今回取り上げた鬼帳票はこんなやつ。

某お役所系帳票です。ホントはこんなのやめてほしいんですが、実際にはまだまだ健在です。四隅の■や各行右側のマークをみると、こーんな後続業務を想像することができます。

  1. これをどこかでスキャンしてシステム的に読み取って
  2. ぜったい間違いが出るので誰かが目視でチェックして
  3. チェックミスを防ぐために、ダブルチェック
  4. ダブルチェックミスを防ぐために、トリプルチェック
  5. その後どこか別のシステム(Excelだったりしてね)に転記
  6. 以下続く・・・・

ファースト・トライアル

さっそくやってみましょう。こんなの、プリントクリエイター使えばあっという間に・・・と、設定を進めていきます。
何事も初めはシンプルに。スモールスタートです。下の図のような簡単なアプリを作りました。

氏名はいいとして、問題は「ワク」がついている「個人番号」です。様式のフォーマットのPDFを手に入れて、プリントクリエイターにアップロードし、kintoneアプリとの紐付けの設定を進めていきました。
まずは通常どおり、個人番号のエリアに1つの文字列要素を設置し、「個人番号」フィールドを表示するように設定してみます。

さっそくプレビュー!

文字のフォントを大きくしたりして調整しようとしたけど、ダメです。文字の間にスペースを入れたら。。。
例)12345 → 1 2 3 4 5

なんか微妙にだめです。表示の設定画面や、裏技を探しても、文字間を調整する機能は見当たりません。

セカンド・トライアル

いろいろ検証してみましたが、これは地道にやるしかなさそうです。そこで、アプリの構成を次のようにしました。入力した個人番号(12桁)の内容をひと文字ずつ格納するためのフィールドを12個設置しました。

このフィールドを1個ずつ、プリントクリエイターに設定していきます。同じ形のフィールド要素を揃えて並べたい時には、プリントクリエイターの設定画面にある、位置を座標の数値で設定できる機能が有効です。
微妙な位置の調整が必要なときも、この数字を変えていくことで楽に設定ができます。

今回は、まず最初の1つを設定して、「要素のコピー」→「位置の微調整」→「フィールドコード修正」という流れで12個複製しました。
1つを選んだ状態で、青いコピーボタンを押すと、横に要素が複製されます。帳票フォーマットに合うように、数値で位置の微調整を行います。次に表示するフィールドコードの修正をしますが、フィールドリストから選択する方法の他に、直接書き換えるという方法も使えます。今回はフィールドコードに番号を振ってありますので、その部分だけを書き換えていきます。

このマスに合わせて、フィールド要素を12個並べました

プレビューで確認してみます。完璧です!

他の項目についても同様に設定していきます。でも今回は個人番号とフリガナだけで勘弁してください(笑)

帳票の出力結果は次のようになりました。これならいけイケそうです。

どうやって文字を分割させるか

次の問題。どうやってひと文字ひと文字切り分けるか。
kintoneの自動計算には、文字列を切り出す機能がありません。
ここはさすがに、kintoneのJavaScriptカスタマイズで対応することにします。

やりたいこと:個人番号と、被保険者氏名カナに入力した文字列を、ひと文字ずつ分割して、個別フィールドに格納します(下図参照)

フィールドコードをまとめて設定するときは、kToolsが便利です!

ソースコード(JavaScript)


(function () {
    'use strict';
    kintone.events.on([
        'app.record.create.submit', 'app.record.edit.submit', 'app.record.index.edit.submit'
    ], function (event) {
        const record = event.record;
        const personalNumber = record['個人番号']['value'];
        const nameKana = record['被保険者氏名カナ']['value'];

        // 分割後にデータを入れるフィールドコード配列
        const fieldsNumber = [
            '個人番号_01', '個人番号_02', '個人番号_03', '個人番号_04', '個人番号_05', '個人番号_06',
            '個人番号_07', '個人番号_08', '個人番号_09', '個人番号_10', '個人番号_11', '個人番号_12'
        ];
        
        const fieldsKana = [
            'カナ_01', 'カナ_02', 'カナ_03', 'カナ_04', 'カナ_05', 'カナ_06', 'カナ_07', 'カナ_08', 'カナ_09', 'カナ_10',
            'カナ_11', 'カナ_12', 'カナ_13', 'カナ_14', 'カナ_15', 'カナ_16', 'カナ_17', 'カナ_18', 'カナ_19', 'カナ_20'
        ];

        // 文字を分割・レコードオブジェクト更新処理
        const splitStrToField = function (str, fields) {
            clearFields(fields);    // フィールド初期化
            for (var i = 0; i < str.length; i++) {
                record[fields[i]]['value'] = str.substr(i, 1);
            }
        }

        // 格納用フィールドクリアー処理
        const clearFields = function (fields) {
            for (var i = 0; i < fields.length; i++) {
                record[fields[i]]['value'] = '';
            }
        }

        // 処理
        if (personalNumber !== undefined) {
            splitStrToField(personalNumber, fieldsNumber);
        }
        if (nameKana !== undefined) {
            splitStrToField(nameKana, fieldsKana);
        }

        return event;

    });
})();

さいごに

さて、どうだったでしょうか?
帳票フォーマットが今回はPDFでしか提供されていないことと、枠にキッチリ合わせて多くの印刷要素を設置する必要がある、という条件だったので、プリントクリエイターを使ってみました。

もし、帳票フォーマットがExcelやWordで提供されているのであれば、RepotoneUシリーズやドキュトーンも有効活用できると思います。

2020年は連携サービス含めて、実践的な情報発信を充実させていきたいと思います。
めざせ!プリント系エバンジェリスト!

この記事は「kintone Advent Calendar 2019」の9日目の記事で した。他にも参考になる記事がたくさん投稿されています。エンジニアじゃない人もぜひ読んでみてください!

kintone導入・活用のご相談はこちら!

こんな悩みを抱えていませんか?

◇ kintone導入がなかなか進まない
◇ アプリが思ったような動きをしてくれない・・・
◇ カスタマイズやプラグインをどう選んだらいいの??
◇ 業務改善の進め方がよくわからない

サイボウズ公認 kintone エバンジェリストの 松田正太郎があなたの相談相手になります。
保有しているkintone認定資格:
・kintone認定アソシエイト(2017)
・kintone認定アプリデザインスペシャリスト(2017)
・kintone認定カスタマイズスペシャリスト(2020)

★業務改善アドバイス、kintone構築支援
★連携サービス・プラグイン選定支援、カスタマイズ
★詳細ヒアリングの上、御社に最適なプランを提案します
★初回打合せ(2時間程度)は無料。まずはお問い合わせください!(WebミーティングOK)