Googleがgithubで公開しているlibPhoneNumberをmacOSなどに向けてポーティングした「libPhoneNumbermacOS」を呼び出して電話番号の妥当性チェックを行うAppleScriptです。
github上のプロジェクトをダウンロードしてXcodeでビルドすれば、普通にCocoa Frameworkを作れるので各自ご自分でビルドしてください。実行は、macOS 10.14以降であればScript Debuggerが必要です(Xcode上で作成するAppleScriptアプリケーションであれば、とくにScript Debuggerは必要ありません。XcodeのAppleScript編集機能が低すぎて結局Script Debuggerは必要になるのですが)。
これから先、macOSやAppleScriptも電話機能や電話番号との付き合いが増えてくるはずなので、電話番号の妥当性チェックは必要になることでしょう。
libPhoneNumberには電話番号の妥当性チェックの機能のほか、電話番号から位置情報を求められるようですが、Blocks構文の記述が必要なのでソース自体に手を加える必要がありそうなので手を出していません。
AppleScript名:libPhoneNumbermacOSで電話番号のバリデーション v2.scptd |
— – Created by: Takaaki Naganoya – Created on: 2020/07/29 — – Copyright © 2020 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use framework "libPhoneNumbermacOS" –https://github.com/iziz/libPhoneNumber-iOS use scripting additions property NBEPhoneNumberFormatE164 : 0 property NBEPhoneNumberFormatINTERNATIONAL : 1 property NBEPhoneNumberFormatNATIONAL : 2 property NBEPhoneNumberFormatRFC3966 : 3 set pUtil to current application’s NBPhoneNumberUtil’s alloc()’s init() set {myPhone, pRes} to pUtil’s parse:"03-5297-2311" defaultRegion:"JP" |error|:(reference) –JPNICの電話番号 if pRes is not equal to missing value then return set vRes to (pUtil’s isValidNumber:myPhone) as boolean –E164形式(ITU-T(国際電気通信連合 電気通信標準化セクター) E.164勧告) set vResE164 to pUtil’s format:myPhone numberFormat:(NBEPhoneNumberFormatE164) |error|:(reference) log {"E164", vResE164} –> {"E164", {(NSString) "+81352972311", missing value}} –国際電話形式 set vResINTN to pUtil’s format:myPhone numberFormat:(NBEPhoneNumberFormatINTERNATIONAL) |error|:(reference) log {"INTERNATIONAL", vResINTN} –> {"INTERNATIONAL", {(NSString) "+81 3-5297-2311", missing value}} –国内形式 set vResNATN to pUtil’s format:myPhone numberFormat:(NBEPhoneNumberFormatNATIONAL) |error|:(reference) log {"NATIONAL", vResNATN} –> {"NATIONAL", {(NSString) "03-5297-2311", missing value}} –RFC3966形式 set vResRFC3966 to pUtil’s format:myPhone numberFormat:(NBEPhoneNumberFormatRFC3966) |error|:(reference) log {"RFC3966", vResRFC3966} –> {"RFC3966", {(NSString) "tel:+81-3-5297-2311", missing value}} set cRes to (pUtil’s extractCountryCode:"+81-3-5297-2311" nationalNumber:(missing value)) as integer –> 81 set nationalNumber to missing value set {cRes, nRes} to (pUtil’s extractCountryCode:"+81-3-5297-2311" nationalNumber:(reference)) return {cRes as integer, nRes as string} –> {81, "-3-5297-2311"} |