経費精算を自動化したくて作った時の個人的なメモです。
ご利用料金内訳明細書のダウンロードはSMSのセキュリティ番号を使った認証が必要だったので自動化できませんでした。
PDFをダウンロードしたところからスタート。
PDFをテキストにして、テキストを1行ごとのテキストリストに変換
- ファイルの選択ダイアログを使ってPDFファイルを指定する。(ファイルフィルターは「*.pdf」、複数の選択を許可しない)
- PDFをCSVに変換する
- CSVを1行ごとのリストに変換する
テキストの解析を使って、特定文字(今回だと「小計」と「消費税等10%」)がある行の数値だけを抽出
- さっきのテキストリストを1行ごと食わせてループする
- 小計 の文字列を探して、結果を変数 小計 に入れる(その文字がないと-1を返し、あると0以上を返す)
- 同様に消費税等10% の文字列を探して、結果を変数 消費税 に入れる(10行目のENDのあとに入れても見やすくてわかりやすいかもしれないですね)
- もし小計が0より大きかったら(=その行に小計の文字列があったら)以下を実行する
- 空白をトリム
- その行を '\s+'(正規表現で'1つ以上の空白')で分割する
- 分割したリストの2つ目(リストや行列は0始まりなので[1]は2つ目を表す)を変数に取り出す
- 取り出した文字列を数字に変換する(4桁以上あったときのカンマを消してくれる)
- (動作確認用、省略)
- Ifの終了
- もし消費税が0より大きかったら(=その行に消費税等10%の文字列があったら)以下を実行する
- 空白をトリム
- その行を '\s+'(正規表現で'1つ以上の空白')で分割する
- 分割したリストの2つ目(リストや行列は0始まりなので[1]は2つ目を表す)を変数に取り出す
- 取り出した文字列を数字に変換する(4桁以上あったときのカンマを消してくれる)
- (動作確認用、省略)
- Ifの終了
- For Eachのループの終了
これで変数 小計数字 と 消費税数字 の中にそれぞれ税別の金額と消費税の金額が代入されます。
この数字を使って経費精算のワークフローを自動化していますが、ここから先は所属企業固有のシステムなので書きません(書けません)。
応用すればPDFから任意の文字や数字を取り出して活用ができそうですね!