2 votes

Comment puis-je utiliser une variable dans AppleScript pour le nom du navigateur ?

J'essaie de rationaliser un AppleScript qui vérifie si les onglets des navigateurs web sont actuellement ouverts sur des sites spécifiques.

Je peux répéter le même bloc de code plusieurs fois, c'est maladroit mais ça marche :

tell application "Safari"
    repeat with site in sitelist
        repeat with w from 1 to number of windows
            set tabList to (every tab of window w whose URL contains site)
        end repeat
    end repeat
end tell
tell application "Chrome"
    repeat with site in sitelist
        repeat with w from 1 to number of windows
            set tabList to (every tab of window w whose URL contains site)
        end repeat
    end repeat
end tell

J'aimerais que ce code fonctionne pour plus de navigateurs que ces deux-là. J'ai essayé d'utiliser une variable pour représenter le nom du navigateur :

set browserlist to {"Safari", "Chrome"}

repeat with browser in browserlist
    tell application browser
        repeat with site in sitelist
            repeat with w from 1 to number of windows
                set tabList to (every tab of window w whose URL contains site)
            end repeat
        end repeat
    end tell
end repeat

Mais AppleScript me donne une erreur de syntaxe, "Nom de classe attendu mais propriété trouvée". Apparemment, lorsque je change tell application "Safari" à tell application browser il a un problème avec tab dans cette ligne :

set tabList to (every tab of window w whose URL contains site)

Puis-je obtenir tab pour travailler avec la variable browser ?

Merci !

0 votes

Oui, cela se produit encore dans les deux cas. Je pense que @red_menace explique le problème : compilation au moment de l'exécution ou au moment de la compilation.

3voto

red_menace Points 1014

Cela ne fonctionnera pas car la cible d'une application tell est nécessaire au moment de la compilation pour charger son dictionnaire de scripts. La terminologie d'une application est définie comme le développeur l'entend, de sorte que toute similitude entre les applications est davantage un accident qu'une convention.

Ce qui s'en rapproche le plus, c'est la construction programmatique d'un script sous la forme d'une chaîne de caractères et son utilisation avec un fichier de type run script puisque le script de la chaîne est compilé lorsqu'il est utilisé :

set theApp to "Safari"
set theScript to "tell application \"" & theApp & "\" to get tabs of window 1"
run script theScript

0 votes

Merci ! C'est logique maintenant - j'avais besoin qu'AppleScript ignore la substance du script jusqu'à ce que theApp a été attribuée au moment de l'exécution.

0 votes

@randm Il s'agit d'une question distincte, vous devriez donc créer une nouvelle question sur ce site, d'autant plus que vous posez des questions sur la syntaxe et que la section des commentaires ne permet pas aux blocs de code d'être formatés sur plusieurs lignes.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X