見出し画像

電話番号を分類するやつを作りました

お名前は揃江TEL夫(そろえてるお)です、記事のヘッダー画像は丸尾末男です。

割と切実に業務でやってる作業を自動化したいな〜と思って作ったものです。
基本的にエクセルでの作業を想定しているので、じゃあVBAでやったら良いじゃんと思われるのですが、VBAは書き方探してるだけで時間かかるし…jQueryなら比較的サクッと書けるし…と思い、ブラウザで動くものとして作成しました。

今回も測林蔵と同じように3ポイントに絞って、制作過程をメモしようと思います。
何かの役に立てば幸いです。

1.textareaの内容をエクセルっぽく扱う
2.番号の判定と振り分け
3.出力・今後の課題

■1.textareaの内容をエクセルっぽく扱う
まずはエクセルから列をコピペしてきてブラウザに移した際に、配列などで扱えないとダメだなとは思っていました。
こちらの記事を参考にしております。

上記の記事をベースにスタートしております。
空白行の無視をしてしまうと、双方のセル位置が食い違ってしまうので、今回は空白行も配列に入るようにif文を省いています。

また、for文は「電話番号1」か「電話番号2」のどちらか長い方を基準に回るようにしており、もしどちらかの内容が空(null、undefined)になったら、””を代入するようにしています。

■2.番号の判定と振り分け
今回一番の肝となり、苦労したのはこれでした。
実際にはif文の積み重ねでしたが、自分で考えていくと大変でした…。
着想としては下記の記事が参考になっています。

上記の記事内のif文では、セル内の先頭が080か090かで判定を行っています。
確かに1列だけの処理ならこれで良いのですが、今回は2列にバラバラに入ってしまっている状態を対象にしています。
(なお、電話番号がどちらも固定電話(もしくは携帯電話)の場合は、そのままで良い)

細かい内容は揃江TEL夫のページに書いてあるので省きますが、
1.「電話1」に携帯電話(先頭090・080・070)が入っている場合
2.1では無い(空白か固定電話)の場合
から考えて、分岐を作成しました。

実際にはindexOf()で指定する時にダブルクォーテーションで指定し忘れて、何度もif文を見直すというバカもやりつつ、なんとか構築しています。

■3.出力・今後の課題
最初はulでリスト状に出そうと思ったのですが、そもそもtableで出力すればコピペでエクセルに戻せるので、tableで出力しています。

実はCSV出力も付けたい、とちょっとだけ思っていたのですが、実際tableで出力できてエクセルへのコピペもできたので、満足してそこまでとなっております。

CSVのダウンロードもつけようと思ったときは、下記の記事を参考に進めようかと考えています。

また別の課題としては、件数がかさむと動作が重くなる点があります。
僕のボロいPCだと、5,000件くらいから処理に時間がかかる感じです。
30,000件を流してみたら、クッソ時間がかかってしまい完了を確認できませんでした。

もっとif文の分岐をスマートにするとか、そもそもjQueryを使わずにjavascriptで書くとかでもっとパフォーマンスが良くなるのかも知れませんが、今のところ僕は多くて10,000件程度の処理しかしないので、とりあえず今のままで使っていこうかなぁとなっちゃってます。

というわけで、完全に自分用ですが、どなたかのお役に立てば嬉しいですm(__)m

この記事が気に入ったらサポートをしてみませんか?