Не так давно, жителей Украины «обрадовали», что цифру «8» из набора номеров убирают:

УВАГА! НОВІ ПРАВИЛА НАБОРУ
З 14 жовтня 2009 року Україна змінює порядок набору міжміських та міжнародних напрямків.
Щоб вийти на міжміську мережу та мережі операторів мобільного зв’язку, замість «8-0» потрібно буде набирати «0».
Для виходу на міжнародну телефонну мережу замість «8-10» необхідно буде набирати «0-0».
Для Київської області введено новий код «45»
(наприклад, було 8-0-44-97-22222, з 14.10.2009 – 0-45-97-22222).
Код Києва – «44».
Звертаємо увагу, що при здійсненні міжміського виклику необхідно набирати лише один раз «0».
При наборі двох «0» поспіль (0-0) відбувається міжнародне з’єднання з відповідною тарифікацією.

Если у вас в Адресной книге несколько сотен номеров, и вы, без задней мысли вводили номера просто с «8», провести все исправления вручную будет, мягко говоря, накладно.

Поэтому, нашлись добрые люди, которые написали applescript для решения этой хлопотной задачи.

Сам скрипт:

tell application «Address Book»
set cc to (count of items in (get selection)) as string
set nDigit to {«0», «1», «2», «3», «4», «5», «6», «7», «8», «9»}
set question to display dialog «Выделено » & cc & » контактов в адресной книге. Фиксим ?» buttons {«Да!», «Нет»} default button 2
set answer to button returned of question

repeat with u in (get selection)
set curPhones to (every phone of u)
if curPhones is not {} and answer = «Да!» then
repeat with curPhone in curPhones

set temp to value of curPhone as string
set temp to every character of the temp
set newNum to «»
repeat with char in temp
if nDigit contains char then
set newNum to newNum & char
end if
end repeat
—> Исправляем 80 на 380
if (newNum begins with «80») and (length of newNum is 11) then
set newNum to («3» & newNum) as string
end if
—> добавляем +
if temp begins with «+» or newNum begins with 380 then
set newNum to «+» & newNum
end if
—> Форматируем
if (length of newNum) ≥ 4 then
set endPhone to characters ((length of newNum) — 3) thru (length of newNum) of newNum as string —> последние 4 цифры
else
set endPhone to characters 1 thru (length of newNum) of newNum as string
end if
if (length of newNum) ≥ 7 then
set beginPhone to characters ((length of newNum) — 6) thru ((length of newNum) — 4) of newNum as string —> 3 цифры семизнака
else
if (length of newNum) > 4 then
set beginPhone to characters 1 thru ((length of newNum) — 4) of newNum as string
else
set beginPhone to «»
end if
end if

if (length of newNum) > 9 then

set PrefixPhone to characters ((length of newNum) — 9) thru ((length of newNum) — 7) of newNum as string
else
if (length of newNum) > 7 then
set PrefixPhone to characters 1 thru ((length of newNum) — 7) of newNum as string —> непонятный мусор
else
set PrefixPhone to «»
end if
end if

if (length of newNum) > 10 then

set countryCode to characters 1 thru ((length of newNum) — 10) of newNum as string
else
set countryCode to «»
end if
if countryCode = «» and PrefixPhone = «» then
set value of curPhone to beginPhone & » » & endPhone
else
if countryCode = «» then
set value of curPhone to «(» & PrefixPhone & «) » & beginPhone & » » & endPhone
else
set value of curPhone to countryCode & » (» & PrefixPhone & «) » & beginPhone & » » & endPhone
end if
end if

end repeat
end if
end repeat

save
end tell

Перед запуском, советую забэкапить существующие контакты, на всякий, на пожарный…

Скопируйте и вставьте код в Редактор AppleScript, а затем запустите. У меня из 189 карточек, в 135 номера были внесены просто с «восьмерки».

Quest

После запуска скрипта, вот один из результатов:

Result1

Если вы из тех, кому applescript легко читать и изменять, можете задать другую маску, например, отображение «+380», которое так же действует при наборе

Result

или отображение кода своего города.

Советую, все-таки, просмотреть изменения перед синхронизацией, во избежание всяких неприятностей в виде счетов за международные разговоры, или ошибки при наборе номера.

Я даже попробовал отправить SMS на измененный по новому стандарту номер, все прошло успешно.


Читайте также: