Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Carnet d'Adresses] Sélectionner les contacts n'appartenant a aucun groupe ?

6 réponses
Avatar
Aegidius
Bein dans le titre...

Dans le Carnet d'Adresses une solution pour sélectionner les contacts
n'appartenant a aucun groupe ?

Peut-être un script ?

6 réponses

Avatar
Patrick Stadelmann
In article <4cc6ac25$0$23092$,
Aegidius wrote:

Bein dans le titre...

Dans le Carnet d'Adresses une solution pour sélectionner les contacts
n'appartenant a aucun groupe ?



Ce script crée un nouveau groupe contenant les contacts n'appartenant à
aucun autre groupe. Il y a peut-être plus optimal, mais ça devrait
fonctionner


set groupName to text returned of (display dialog ¬
"Nom du groupe à créer" default answer "Dans aucun groupe")

tell application "Address Book"

set newGroup to make new group at end ¬
with properties {name:groupName}

set inGroups to {}
repeat with g in every group
set inGroups to inGroups & (id of people of g)
end repeat

set inNoGroup to {}
repeat with p in every person
if (id of p) is not in inGroups then
copy contents of p to the end of inNoGroup
end if
end repeat

repeat with p in inNoGroup
add p to newGroup
end repeat

quit

end tell

delay 1

tell application "Address Book" to activate


Patrick
--
Patrick Stadelmann
Avatar
Aegidius
Belle approche serte, mais ça ralenti grave vers le 1000ème contact ça
respeed jusqu'au 1500, ça mouline et ça fini pas planter...

Je vais regarder si je peux débuguer seul, tj un peu remis a plus tard
la programmation AS.

En tout cas le groupe ne semble pas créé...

ça fait planter l'éditeur de script...

Il semblerait que ça reste bloqué sur l'ouverture du carnet d'adresse...

Le 26/10/10 14:20, Patrick Stadelmann a écrit :
In article<4cc6ac25$0$23092$,
Aegidius wrote:

Bein dans le titre...

Dans le Carnet d'Adresses une solution pour sélectionner les contacts
n'appartenant a aucun groupe ?



Ce script crée un nouveau groupe contenant les contacts n'appartenant à
aucun autre groupe. Il y a peut-être plus optimal, mais ça devrait
fonctionner


set groupName to text returned of (display dialog ¬
"Nom du groupe à créer" default answer "Dans aucun groupe")

tell application "Address Book"

set newGroup to make new group at end ¬
with properties {name:groupName}

set inGroups to {}
repeat with g in every group
set inGroups to inGroups& (id of people of g)
end repeat

set inNoGroup to {}
repeat with p in every person
if (id of p) is not in inGroups then
copy contents of p to the end of inNoGroup
end if
end repeat

repeat with p in inNoGroup
add p to newGroup
end repeat

quit

end tell

delay 1

tell application "Address Book" to activate


Patrick
Avatar
Patrick Stadelmann
In article <4cc6e400$0$22844$,
Aegidius wrote:

En tout cas le groupe ne semble pas créé...



Il devrait, vu que c'est tout au début, mais il n'est pas visible tout
de suite (c'est pourquoi le script relancait Address Book a la fin).

ça fait planter l'éditeur de script...



Variante un peu meilleure ci-dessous. C'est pas super rapide, c'est
normal, AppleScript n'est pas vraiment adapté pour effectuer en boucle
des opérations très simple, l'overhead devient vite important. Là avec
2000 noms à ajouter dans le groupe, ça a prix une dizaine de minutes sur
un Mac Pro 2 x 2.8 GHz.

J'ai viré le redémarrage du Carnet d'Adresses car il peut mettre du
temps à quitter.



set groupName to text returned of (display dialog ¬
"Nom du groupe à créer" default answer "Dans aucun groupe")

tell application "Address Book"

set newGroup to make new group at end ¬
with properties {name:groupName}

set inGroups to {}
repeat with g in every group
set inGroups to inGroups & (id of people of g)
end repeat

repeat with p in every person
if (id of p) is not in inGroups then
add p to newGroup
end if
end repeat

quit

end tell



Patrick
--
Patrick Stadelmann
Avatar
Aegidius
Le carnet d'adresse s'ouvre quant même...

Le script fini par aller jusqu'au bout, mais pas de nouveau groupe, le
carnet d'adresse n'est pas refermé...

et l'éditeur de script plante...

de l'ordre de 2100 adresses en tout...

On va bien finir par y arriver...

Le 26/10/10 16:50, Patrick Stadelmann a écrit :
In article<4cc6e400$0$22844$,
Aegidius wrote:

En tout cas le groupe ne semble pas créé...



Il devrait, vu que c'est tout au début, mais il n'est pas visible tout
de suite (c'est pourquoi le script relancait Address Book a la fin).

ça fait planter l'éditeur de script...



Variante un peu meilleure ci-dessous. C'est pas super rapide, c'est
normal, AppleScript n'est pas vraiment adapté pour effectuer en boucle
des opérations très simple, l'overhead devient vite important. Là avec
2000 noms à ajouter dans le groupe, ça a prix une dizaine de minutes sur
un Mac Pro 2 x 2.8 GHz.

J'ai viré le redémarrage du Carnet d'Adresses car il peut mettre du
temps à quitter.



set groupName to text returned of (display dialog ¬
"Nom du groupe à créer" default answer "Dans aucun groupe")

tell application "Address Book"

set newGroup to make new group at end ¬
with properties {name:groupName}

set inGroups to {}
repeat with g in every group
set inGroups to inGroups& (id of people of g)
end repeat

repeat with p in every person
if (id of p) is not in inGroups then
add p to newGroup
end if
end repeat

quit

end tell



Patrick
Avatar
Patrick Stadelmann
In article <4cc73b14$0$18813$,
Aegidius wrote:

Le carnet d'adresse s'ouvre quant même...

Le script fini par aller jusqu'au bout, mais pas de nouveau groupe, le
carnet d'adresse n'est pas refermé...

et l'éditeur de script plante...



Ca a changé en 10.6, les modifications doivent être validées. Ca va
ainsi nettement plus vite (moins d'une minute pour 1000 noms).


set groupName to text returned of (display dialog ¬
"Nom du groupe à créer" default answer "Dans aucun groupe")

tell application "Address Book"

set newGroup to make new group at end ¬
with properties {name:groupName}
save

set inGroups to {}
repeat with g in every group
set inGroups to inGroups & (id of people of g)
end repeat

repeat with p in every person
if (id of p) is not in inGroups then
add p to newGroup
end if
end repeat

save

quit

end tell


Patrick
--
Patrick Stadelmann
Avatar
Aegidius
Cette fois ça fonctionne mais ça met toujours autant de temps ce qui
n'est pas en soit un problème, il faut simplement le savoir si ce script
devenait publique il faudrait le préciser histoire que ça ne soit pas
coupé avant la fin...

En tous cas merci beaucoup vu les synchros avec l'iPhone ou je ne veux
justement pas forcément tout

Le 26/10/10 23:54, Patrick Stadelmann a écrit :
In article<4cc73b14$0$18813$,
Aegidius wrote:

Le carnet d'adresse s'ouvre quant même...

Le script fini par aller jusqu'au bout, mais pas de nouveau groupe, le
carnet d'adresse n'est pas refermé...

et l'éditeur de script plante...



Ca a changé en 10.6, les modifications doivent être validées. Ca va
ainsi nettement plus vite (moins d'une minute pour 1000 noms).


set groupName to text returned of (display dialog ¬
"Nom du groupe à créer" default answer "Dans aucun groupe")

tell application "Address Book"

set newGroup to make new group at end ¬
with properties {name:groupName}
save

set inGroups to {}
repeat with g in every group
set inGroups to inGroups& (id of people of g)
end repeat

repeat with p in every person
if (id of p) is not in inGroups then
add p to newGroup
end if
end repeat

save

quit

end tell


Patrick