ファイルメーカーで郵便番号を取得する方法について | レイブロ

レイブロ

時間がない

住所のテキストデータから郵便番号を自動的に取得する方法について...

以下のスクリプトステップで何とか取得できました。

住所のテキストデータを引数として渡してやると郵便番号が返ってきます。

エラー処理や誤った郵便番号のチェックは別途考えてください。

また、GoogleMapsが返してくる生のHTMLデータは時々仕様が変更になることがあるので、検索文字列は都度変更しなければなりません。

私もこのスクリプトを作ったときは「〒」をURLエンコード(UTF-8)した文字列「%E3%80%92」で検索して上手くいっていたのですが突如上手くいかなくなり、今は下記スクリプトにあるように「〒」を数値文字参照した文字列「&#12306」の検索文字列で検索するようにしています。

〒番号を取得する方法として保証されているものではないので、簡易的な方法としては無償で誰でも使えるので重宝します。

因みにFM19でつくって、FM20でも動いてます。

オリジナル関数として使えば、計算フィールドにも組み込めるでしょうし、フィールド値の変更をトリガーにして郵便番号を自動入力するレイアウトを作ってもいいしね。(後者にしておけば手入力もできるからいいですよね)

 

余談...

「URLから挿入」スクリプトステップは自分でサーバーを立ててるような人にはとても便利...と言うかこれ以外に選択肢がありません。

ファイルメーカー社としては、あまり危険なことができてしまう機能は実装しない方針なのでしょうから仕方のないことです。

しっかり抜け穴を塞がないと、色々できてしまいますもんね。

FM単体では実現できない機能も工夫次第でなんとかなる可能性があるんじゃないかと思います。

例えば、「サーバーに他言語のスクリプト(例えばpythonスクリプトとか)を置いておいて、「URLから挿入」のCURLオプションから引数を付けて呼び出して結果を受け取る。」というのができれば、ファイルメーカーサーバーでサポートしていない機能も追加できたりしますね。

ファイルメーカーでインターフェイスをつくって、システムコマンドを実行することもできるかもです。

システム開発は本業ではないし専門外なので、なるべく使い慣れたものを利用しないと、素早く実現するのがむずかしいですから...

ファイルメーカーだけでは自動化(DX的なシステム)に限界がありますから、SOHOで頑張ってる人にはこの可能性を考えてみると良いかもです。

 

----以下スクリプト

 

変数を設定[ $arg ; 値: Get(スクリプト引数) ]

変数を設定[ $address ; 値: GetValue( $arg ; 1) ]

# GoogleMapsで検索したときの郵便番号の直前文字列を変数に設定

変数を設定[ $address ; 値: "#12306;" ]

 

URLから挿入[ 選択 ; ダイアログあり:オフ ; ターゲット:$target ; "https://www.google.com/search?q=" & $address]

変数を設定[ $position ; 値: Position( $target ; $scerchtext ; 1 ; 1) ]

変数を設定[ $postalcode ; 値: Filter ( RomanHankaku ( Middle ( $target ; $position + Length ( $scerchtext ) ; 8 ) ) ; "0123456789-" ) ]

現在のスクリプト終了[ テキスト結果: $postalcode]

 

----以上スクリプト