Besten Dank für das Script vom 12. März 2012 von Stefan.
Das AppleScript habe ich in der angepassten Form von “hopeman” vom 4. Nov. 2012 heute unter OSX 10.9.2 ausgetestet und hat wunderbar funktioniert. Die entsprechenden Telefonnummer haben nun die internationale Vorwahl +41. Das hat mir wirklich viel Arbeit erleichtert - vielen Dank nochmals.
siehe auch unter:
http://www.macprime.ch/forum/viewthread/8166/
Nun habe ich eine ein anderes Problem:
Ein Datenbankprogramm (Deltaproject - Bauadministrationsprogramm) exportiert mir die Telefonnummern, Mobilenummern als vCard mit der 3-stelligen Ortswahl, die 0 jedoch in einer Klammer. zB. +41 (0) 12 345 67 89
Wenn ich diese Nummer im Kontakt Programm (Vers. 8.0) importiere steht die Null weiterhin in der Klammer. Da iCloud vom Kontakt-Programm die Kontaktdaten mit meinem iPhone 5 synchronisiert sind diese Tel. Nummern aufgrund der Klammer und der Null auf dem Handy unbrauchbar, (diese Nummer ist ungültig…).
Gibt es eine Möglichkeit mit einem AppleScript oder sonst wie, die “(0)” zu entfernen? Manuell 500 Adressen anzupassen sind mir ein bisschen zuviel…
Vielen Dank für Eure Hilfe.
Freundlicher Mac Gruss
speedyandy
Ich habe das alte Script vom anderen Thread mit einer Funktion erweitert, die zusätzlich zu den früheren Tests (enthält die Nummer bereits «+41» oder «0041») testet, ob die Nummer die drei Zeichen «(0)» enthält. Sofern ja, wird es aus der Nummer herausgelöscht.
tell application "Contacts"
repeat with i from 1 to (count every person)
set phoneProperties to properties of phones of person i
repeat with n from 1 to (count of phoneProperties)
set curphone to value of (phone n of person i) as text
if text item 1 of curphone as text does not start with "+" then
if (text items 1 thru 2 of curphone as text) starts with "00" then
set value of phone n of person i to "+" & text 3 thru -1 of curphone
else
set value of phone n of person i to "+41" & text 2 thru -1 of curphone
end if
end if
set klammer to "(0)"
if curphone contains klammer then
set AppleScript's text item delimiters to klammer
set tempnumber to curphone's text items
set AppleScript's text item delimiters to ""
set value of phone n of person i to tempnumber as text
end if
end repeat
end repeat
save
end tell
… zu iPhone-kompatiblen und international verwendbaren Nummern im Format «+41 79 123 45 67»
Bitte umbedingt zuerst in einem Dummy-Adressbuch TESTEN!
Das Script via /Applications/Utilities/AppleScript-Editor.app ausführen lassen.
Mach zuerst von deinem Adressbuch bzw. deinen Kontakten eine Sicherheitskopie (Kontakte-Menü: «Ablage:Exportieren:Kontakte-Archiv…»! Ich übernehme keinerlei Haftung für mein Script! :-)
vielen Dank für das Script.
Es scheint jedoch nicht zu funktionieren - die Ergebnismeldung lautet “missing value”, obwohl ich absichtlich bei drei verschiedenen Kontakten die Klammer mit der Null “(0)” eingebaut habe.
Bei allen Kontakten ist die internationale Vorwahl korrekt formatiert also +41, oder +49 oder +423, usw.
Die Nummern der drei Kontakte bleiben also weiterhin unverändert im folgenden Format:
+41 (0) 79 123 45 67
Gibt es eine andere Lösung, dieses Problem zu eliminieren?
Ich habe zwei Kontaktdaten vom Datenbankprogramm in das Kontakt-Programm mit vCard importiert. Die Zeilen 6-12 des Scripts habe ich weggelassen und ausführen lassen und habe folgenden Teilbericht über diese beiden Kontakte erhalten.
get properties of every phone of person 435
--> {{label:"mobile", value:"+41", class:phone, id:"EF9A3EBD-E16C-4A9D-B1E8-9350C63B7B6F"}, {label:"home", value:"+41 071 345 67 89", class:phone, id:"9F9AEF9D-0987-40F5-8312-8F675166C93D"}}
get value of phone 1 of person 435
--> "+41"
get value of phone 2 of person 435
--> "+41 071 345 67 89"
get properties of every phone of person 436
--> {{label:"mobile", value:"+41 079 234 56 78", class:phone, id:"0F434946-EF56-4BF0-AA44-9430FA38FBE2"}, {label:"home", value:"+41 071 123 45 67", class:phone, id:"E79940BA-01EE-4F0C-A9E6-02C836D63E74"}}
get value of phone 1 of person 436
--> "+41 079 234 56 78"
get value of phone 2 of person 436
--> "+41 071 123 45 67"
save current application
--> missing value
end tell
jetzt siehe da… im Script werden die Klammern nicht interpretiert bzw. es gibt gar keine Klammer, nur die Null, obwohl die Telefonnummern im Kontakte-Programm eine Klammer aufweisen (siehe Print-Screen Anhang Person 435 / Person 436).
Nun habe ich mir die v-Card dieser beiden Kontakte im TextEdit angeschaut und siehe da, auch da wird keine Klammer aufgeführt!
Das bedeutet, das Script müsste so abgeändert werden, dass grundsätzlich keine 0 nach einer internationalen Vorwahl wie +41, +49, +423 usw. stehen darf.
(ob diese Regel für alle Länder auf der Welt gilt, ist mir aber momentan nicht bekannt…???)
Hmm, dann müsste das Script das erste Zeichen — das 0 — nach der Ländervorwahl und dem Leerzeichen entfernt werden. Vielleicht wie folgt?
Hinweis: während die anderen Scripts nur «+41» berücksichtigten bzw. hinzufügten, schaut dieses neue Script nun einfach nach der Zeichenfolge nach einem «+» und dann ob es nach dem folgenden Leerzeichen ein 0 hat — wenn ja, dann schreib die Nummer neu ohne das 0.
In meinen Tests hats funktioniert. Aber wie immer: zuerst selber auch testen! ;-)
tell application "Contacts"
repeat with i from 1 to (count every person)
set phoneProperties to properties of phones of person i
repeat with n from 1 to (count of phoneProperties)
set curphone to value of (phone n of person i) as text
set AppleScript's text item delimiters to " "
set tempcountry to curphone's text item 1
set tempcount to count (tempcountry)
set AppleScript's text item delimiters to ""
set tempnumber to text (tempcount + 2) thru -1 of curphone
if text item 1 of tempnumber as text is "0" then
set value of phone n of person i to tempcountry & text 2 thru -1 of tempnumber
end if
end repeat
end repeat
save
end tell
das Script bringt jeweils eine Fehlermeldung bei den Kontakten die keine Leerzeichen zwischen der Internationalen Vorwahl und der Ortsvorwahl aufweisen zB+41791234567. Die Nummer ist aber korrekt und das iPhone wie auch das Kontakte-Programm übernehmen bei mir das Adressformat “Schweiz” und zeigen deshalb ein Leerzeichen zur besseren Übersicht an, ein Leerzeichen wurde aber keines eingegeben. Beim Eintippen einer neuen Kontakt-Nummer auf dem iPhone tippt man ja auch keine Leerzeichen ein.
Fehlermeldung:
error “„text 14 thru -1 of "+41791234567"“ kann nicht gelesen werden.” number -1728 from text 14 thru -1 of “+41791234567”
Da ich derzeit sehr viele Adressen ohne Leerzeichen habe, aber korrekt definiert sind, das heisst keine 0 ind der Ortsvorwahl, kommt die Abfrage gar nicht zu den beiden “falschen” Datensätzen mit der 0 in der Klammer. Deshalb kann ich momentan nicht sagen, ob das vorherige Script funktioniert…
Kann jemand dieses letzte Script von Stefan anpassen?
Vielen Dank für eure weitere Unterstützung
speedyandy
… grundsätzlich keine 0 nach einer internationalen Vorwahl wie +41, +49, +423 usw. stehen darf. (ob diese Regel für alle Länder auf der Welt gilt, ist mir aber momentan nicht bekannt…???)
Eine Ausnahme weiss ich: Italien verlangt für das Festnetz nach der Null, zB. +39 0 123 456789, für das Mobilnetz hingegen nicht.
Danke für den wichtigen Hinweis, habe ich nicht gewusst, aber in meinem Fall erübrigt sich das, da ich keine einzige Nummer von Italien gespeichert habe und wenn dann wären es nur wenige, und bei diesen könnte man die Null auch wieder manuell einfügen…
@speedyandy: hmm, das wird so also etwas komplizierter wenn es da kein Leerzeichen nach der Landesvorwahl hat :-D … so kann man nicht mehr so «einfach» herausfinden wann die Landesvorwahl zuende ist … leider gibt es ja nicht nur zwei- (+) bzw. vier- (00) -stellige Ländervorwahlen. Weisst du was du alles für Vorwahlen hast? Eine Liste dieser wäre für eine Lösung bedeutend einfacher als ein Script, welches global funktionieren sollte (was eh zu Problemen führen könnte wie der Beitrag von don zeigt).
meine aktuellen Vorwahlen im Adressbuch sind zurzeit:
Niederlande +31
Belgien +32
Frankreich +33
Spanien +34
Montenegro +382
Kroatien +385
Schweiz +41
Liechtenstein +423
Österreich +43
Deutschland +49
Anmelden um neue Antworten zu verfassen
Allegra Leser! Nur angemeldete Nutzer können bei diesem Beitrag Antworten hinterlassen. Jetzt kostenlos registrieren oder mit bestehendem Benutzerprofil anmelden.
Ab CHF 5.– im Monat
👉🏼 Wir benötigen deine Unterstützung! Unterstütze macprime mit einem freiwilligen Gönner-Abo und mache die Zukunft unseres unabhängigen Apple-Mediums aus der Schweiz mit möglich.
macprime unterstützen
macprime ForumKontakte: Telefonnummern Ortsvorwahl für iPhone korrekt formatieren (ohne 0 in Klammern)
VonAntwort von speedyandy
(Bearbeitet am 15. Mai 2014 um 09:35 Uhr von Stefan Rechsteiner)
Stefan Rechsteiner
(Bearbeitet am 15. Mai 2014 um 10:15 Uhr von Stefan Rechsteiner)
speedyandy
Stefan Rechsteiner
speedyandy
Stefan Rechsteiner
speedyandy
don
speedyandy
Stefan Rechsteiner
speedyandy
Anmelden um neue Antworten zu verfassen
Allegra Leser! Nur angemeldete Nutzer können bei diesem Beitrag Antworten hinterlassen. Jetzt kostenlos registrieren oder mit bestehendem Benutzerprofil anmelden.