プリントクリエイターにムリをさせてみた(kintone Café JAPAN 2019 ゴチャまぜ企画!プリント番外編)
★この記事は「kintone Advent Calendar 2019」の9日目の記事です。
みなさんこんにちは。プロジェクト・アスノートの松田です。
今回とりあげた鬼帳票はこれ
今回取り上げた鬼帳票はこんなやつ。
某お役所系帳票です。ホントはこんなのやめてほしいんですが、実際にはまだまだ健在です。四隅の■や各行右側のマークをみると、こーんな後続業務を想像することができます。
- これをどこかでスキャンしてシステム的に読み取って
- ぜったい間違いが出るので誰かが目視でチェックして
- チェックミスを防ぐために、ダブルチェック
- ダブルチェックミスを防ぐために、トリプルチェック
- その後どこか別のシステム(Excelだったりしてね)に転記
- 以下続く・・・・
ファースト・トライアル
さっそくやってみましょう。こんなの、プリントクリエイター使えばあっという間に・・・と、設定を進めていきます。
何事も初めはシンプルに。スモールスタートです。下の図のような簡単なアプリを作りました。
氏名はいいとして、問題は「ワク」がついている「個人番号」です。様式のフォーマットのPDFを手に入れて、プリントクリエイターにアップロードし、kintoneアプリとの紐付けの設定を進めていきました。
まずは通常どおり、個人番号のエリアに1つの文字列要素を設置し、「個人番号」フィールドを表示するように設定してみます。
さっそくプレビュー!
文字のフォントを大きくしたりして調整しようとしたけど、ダメです。文字の間にスペースを入れたら。。。
例)12345 → 1 2 3 4 5
なんか微妙にだめです。表示の設定画面や、裏技を探しても、文字間を調整する機能は見当たりません。
セカンド・トライアル
いろいろ検証してみましたが、これは地道にやるしかなさそうです。そこで、アプリの構成を次のようにしました。入力した個人番号(12桁)の内容をひと文字ずつ格納するためのフィールドを12個設置しました。
このフィールドを1個ずつ、プリントクリエイターに設定していきます。同じ形のフィールド要素を揃えて並べたい時には、プリントクリエイターの設定画面にある、位置を座標の数値で設定できる機能が有効です。
微妙な位置の調整が必要なときも、この数字を変えていくことで楽に設定ができます。
今回は、まず最初の1つを設定して、「要素のコピー」→「位置の微調整」→「フィールドコード修正」という流れで12個複製しました。
1つを選んだ状態で、青いコピーボタンを押すと、横に要素が複製されます。帳票フォーマットに合うように、数値で位置の微調整を行います。次に表示するフィールドコードの修正をしますが、フィールドリストから選択する方法の他に、直接書き換えるという方法も使えます。今回はフィールドコードに番号を振ってありますので、その部分だけを書き換えていきます。
プレビューで確認してみます。完璧です!
他の項目についても同様に設定していきます。でも今回は個人番号とフリガナだけで勘弁してください(笑)
帳票の出力結果は次のようになりました。これならいけイケそうです。
どうやって文字を分割させるか
次の問題。どうやってひと文字ひと文字切り分けるか。
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)