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

某お役所系帳票です。ホントはこんなのやめてほしいんですが、実際にはまだまだ健在です。四隅の■や各行右側のマークをみると、こーんな後続業務を想像することができます。
- これをどこかでスキャンしてシステム的に読み取って
- ぜったい間違いが出るので誰かが目視でチェックして
- チェックミスを防ぐために、ダブルチェック
- ダブルチェックミスを防ぐために、トリプルチェック
- その後どこか別のシステム(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'] = '';
}
}
// 処理
splitStrToField(personalNumber, fieldsNumber);
}
splitStrToField(nameKana, fieldsKana);
}
return event;
});
})();
さいごに
さて、どうだったでしょうか?
帳票フォーマットが今回はPDFでしか提供されていないことと、枠にキッチリ合わせて多くの印刷要素を設置する必要がある、という条件だったので、プリントクリエイターを使ってみました。
もし、帳票フォーマットがExcelやWordで提供されているのであれば、RepotoneUシリーズやドキュトーンも有効活用できると思います。
2020年は連携サービス含めて、実践的な情報発信を充実させていきたいと思います。
めざせ!プリント系エバンジェリスト!
★ この記事は「kintone Advent Calendar 2019」の9日目の記事で した。他にも参考になる記事がたくさん投稿されています。エンジニアじゃない人もぜひ読んでみてください!
関連
kintone の活用・業務改善についてご相談があれば、お問い合わせ からお気軽にどうぞ。