別法人の施設を承継することになり、34名の職員をこちらの法人で採用し直す必要が出てきました。採用日は全員同じ日。つまり、34通の雇用契約書を同じ日付で作らなければいけません。
Wordのテンプレートを開いて、氏名を書き換えて、生年月日を書き換えて、基本給を書き換えて、名前を付けて保存する。1通あたり真面目にやれば10分。34通で5時間以上です。しかも、こういう作業に限って必ず1〜2件は取り違えます。
結果として、この34通は30分ほどで出来上がりました。やったことを書きます。
■ やり方はシンプル
1. Wordのテンプレートに「差し込む場所」の目印を入れる
2. 職員データをExcel(またはCSV)に1人1行で用意する
3. Pythonで1行ずつ読み、目印を置き換えて、名前を付けて保存する
これだけです。python-docxというライブラリを使えば、Wordファイルを開いてテキストを置き換えて保存する、という処理が数十行で書けます。
ポイントは、テンプレート側に「{氏名}」「{基本給}」のような目印を入れておくこと。あとはPython側で、Excelの列と目印を対応させるだけです。
■ つまずいたところ
やってみると、素直にはいかない部分がいくつかありました。
・Wordは同じ文字列を分割して持っていることがある
見た目は「{氏名}」でも、内部では「{氏」「名}」のように分かれている場合があります。単純な置換だと引っかからない。段落単位でテキストをまとめてから置換する処理を入れて解決しました。
・Excelの数値は先頭のゼロが落ちる
口座番号や職員コードで痛い目を見ます。「0001234」が「1234」になる。データはCSVで持つか、文字列として読み込む指定が要ります。この手のミスは、出来上がった書類を見るまで気づけないので厄介です。
・氏名のスペース
「山田 太郎」と「山田 太郎」(半角と全角)は別物として扱われます。他システムのデータと突き合わせるときに一致せず、静かに取りこぼします。正規化してから使うようにしました。
・PDF化はWordに任せる
最終的にPDFで配る場合、Word経由で変換するのがいちばん見た目が崩れません。Windowsなら、PythonからWordを操作してPDF出力させられます。
■ 契約書以外にも効く
同じ仕組みは、様式が決まっていて中身だけが人によって変わる書類なら何にでも使えます。私が今この方式で作っているのは、
・雇用契約書、労働条件通知書
・介護施設の重要事項説明書、入居契約書
・行政に出す届出の様式(別添の表紙など)
・請求書、業務委託の月次請求書
・在宅医療の計画書(患者ごとに800名分以上)
このあたりです。特に最後の在宅医療計画書は、毎月800名超を作り直す必要があるので、手作業では現実的にどうにもなりません。
■ 効果は「時間」より「間違いが減ること」
時間短縮も大きいのですが、実感としてより大きいのは間違いが減ることです。
手作業のコピー&ペーストだと、前の人の情報が1か所だけ残る、という間違いが必ず起きます。しかも本人に渡ってから発覚する。契約書でそれをやると、単なるミスでは済みません。
元データが正しければ、出来上がった書類も正しい。確認すべき場所が「元データ1か所」に集約されるのが、いちばんの利点だと思っています。
■ 始め方
まずは、今いちばん枚数が多い書類を1つ選んでください。そのテンプレートと、対象者リストがあれば、それだけで始められます。10通を超えるなら、手で作るより仕組みを作ったほうが早いです。
定型書類の一括作成や、Excelデータからの帳票生成については、ココナラの「医療・介護の事務をPythonで自動化します」「Excel集計・データ加工を自動化します」でご相談いただけます。どんな書類を何通作りたいか、テンプレートの形が決まっているか。この2点が分かれば、実現できるかどうかはすぐお答えできます。