Droits d'accès et AppleScript

Mac1978

Membre actif
15 Février 2008
122
5
Bonjour,
J'ai écrit un petit script pour lister toutes les bal d'un compte mail IMAP, script que je n'arrive ni à compiler, ni à sauver :

use AppleScript version "2.8" -- Lion (10.7) or later
use scripting additions

on run
tell application "Mail"
set account to first account whose name is "[email protected]"
set mailboxes to every mailbox of account

repeat with aMailbox in mailboxes
set mailboxName to name of aMailbox
display dialog mailboxName
end repeat
end tell
end run

Quand je veux compiler ou sauver mon script, j'obtiens l'erreur suivante :
Can’t set «class mact» to first «class mact» whose name is "[email protected]". Access not allowed.

J'ai donné les accès à tout le disque à l'éditeur de script, mais rien ne change. Je n'ai pas d'autres idées ?
(Ce petit script n'est que le début d'un script que j'aimerais faire pour archiver un compte mail depuis une date donnée et supprimer les mails archivés afin d'alléger certains de mes comptes qui sont pleins et bientôt bloqués par mon FAI)
 
Bonjour,
Je n'ai pas compris ce que tu voulais faire ! mais voilà ton script modifié pour obtenir les infos des comptes de mail, avec des "display dialog " pour voir ce que le script récupère.
De plus tu emplois des noms de commandes comme variables ("account" ) dans : "set account to first account whose name is "[email protected]" et ("mailboxes" et de nouveau "account") dans "set mailboxes to every mailbox of account"

Bloc de code:
on run
    tell application "Mail"
        set nbcompte to count account
        display dialog "nombre de compte : " & nbcompte
        repeat with i from 1 to nbcompte
            set theaccount to account i
            
            set nom to name of theaccount
            display dialog "Nom du compte : " & nom
            
            set lesmailboxes to every mailbox of theaccount
            set nb to count of lesmailboxes
            display dialog "nombre de dossier du compte : " & nb
            
            repeat with aMailbox in lesmailboxes
                set mailboxName to name of aMailbox
                display dialog "nom du dossier : " & mailboxName
            end repeat
        end repeat
        display dialog "fin"
        
    end tell
end run
 
Alors, un grand merci, déjà pour la rapidité de la réponse et deuxièmement pour le script qui compile et fonctionne sous Ventura en demandant l'autorisation de pouvoir manipuler Mail. Malheureusement, ton script ne fait pas ce que j'aimerais faire.

Donc, je n'ai pas été assez claire (je suis une femme, raison du féminin) sur ce que je voulais faire pour commencer.
J'essaie d'écrire un script qui demande le nom d'un compte Mail comme input, puis liste toutes les boîtes mails qu'il y a dans ce compte et affiche la liste en une fois à la fin avec la possibilité de la sauver.
Ainsi, pour mon compte "[email protected]" indiqué en entrée, j'aimerais la liste des 311 boîtes du compte, pouvoir la sauvegarder. Et ainsi, je pourrais le faire manuellement pour les 10 comptes mail que j'ai.

Ceci n'est que la première étape de mon ambitieux script pour pouvoir, pour chacun des 10 comptes que j'ai, créer en local une archive des mails plus anciens qu'une date donnée en entrée, archive respectant la structure par dossier/sous-dossier, puis supprimer les mails du compte afin de l'alléger côté serveur. Mon Provider me signalent effet que l'espace qu'il alloue aux mails me concernant est bientôt plein.
 
Un script qui liste tous les comptes avec tous les boites mails de chaque comptes
Tu pourras récupérer ce qui t'intéresse...
(ce script n'est pas de moi, j'ai récupéré sur le net !)
Bloc de code:
on run
    tell application "Mail"
        set _string to my appendAccounts(accounts, 0, "")
        set _string to my appendOnMyMac(_string)
    end tell
    my displayString(_string)
end run

on appendAccounts(_accounts, _level, _string)
    tell application "Mail"
        set _result to _string
        repeat with _account in _accounts
            set _result to my appendLine(_account's name, 0, _result)
            set _result to my appendMailboxes(my topLevelMailboxesOfAccount(_account), 1, _result)
        end repeat
        return _result
    end tell
end appendAccounts

on appendOnMyMac(_string)
    set _string to my appendLine("On My Mac", 0, _string)
    set _mailboxes to my onMyMacMailboxes()
    set _string to my appendMailboxes(_mailboxes, 1, _string)
    return _string
end appendOnMyMac

on onMyMacMailboxes()
    tell application "Mail"
        set _result to {}
        repeat with _mailbox in mailboxes
            set _container to _mailbox's container
            try
                get container of _container -- Child mailbox
            on error
                copy _mailbox to end of _result -- Top-level mailbox
            end try
        end repeat
        return _result
    end tell
end onMyMacMailboxes

on topLevelMailboxesOfAccount(_account)
    tell application "Mail"
        set _result to {}
        set _mailboxes to _account's mailboxes
        repeat with _mailbox in _mailboxes
            set _container to _mailbox's container
            if class of _container is class of _account then -- Comparing without "class" doesn't work
                set _result to _result & {_mailbox}
            end if
        end repeat
        return _result
    end tell
end topLevelMailboxesOfAccount

on appendMailboxes(_mailboxes, _level, _string)
    tell application "Mail"
        set _result to _string
        repeat with _mailbox in _mailboxes
            set _result to my appendLine(_mailbox's name, _level, _result)
            set _result to my appendMailboxes(_mailbox's mailboxes, _level + 1, _result)
        end repeat
        return _result
    end tell
end appendMailboxes

on appendLine(_line, _level, _string)
    return _string & my prefixForLevel(_level) & _line & return
end appendLine

on prefixForLevel(_level)
    set _indent to "    "
    set _result to ""
    repeat _level times
        set _result to _result & _indent
    end repeat
    return _result
end prefixForLevel

on displayString(_string)
    do shell script "echo " & _string's quoted form & " | open -ef"
end displayString