0 votes

Répéter AppleScript si l'utilisateur confirme une boîte de dialogue contextuelle

J'ai créé un script qui sélectionne et copie tout le texte de l'onglet front Safari, ferme l'onglet, et colle le texte dans le document BBEdit front avec quelques lignes vides de rembourrage.

Je le lancerai quand j'aurai plusieurs onglets dont je veux extraire du texte, en le mettant tous dans un seul document, donc j'aurai besoin d'une option de répétition.

Je ne veux pas fixer le nombre de répétitions, car c'est imprévisible (et je ne veux pas fermer les onglets Safari n'importe comment). Je veux donc que le script se termine une fois, affiche un choix de "Répéter ?" ou "Terminé !", puis se répète, y compris l'affichage, jusqu'à ce que l'utilisateur choisisse "Terminé".

Je ne sais pas comment coder la répétition. Voici où j'en suis :

dites à l'application "Safari" de définir le presse-papiers sur (texte de l'onglet actuel de la fenêtre avant) en tant que chaîne
pause 0.1

dites à l'application "Safari"
    fermer l'onglet actuel de la fenêtre avant sans enregistrer
fin dire
pause 0.1

dites à l'application "System Events"
    dire à l'application "BBEdit" d'activer
    code de touche 36
    code de touche 36

fin dire

dites à l'application "BBEdit"
    activer
    coller
fin dire

dites à l'application "System Events"
    dire à l'application "BBEdit" d'activer
    code de touche 36
    code de touche 36

fin dire

définir le texte d'alerte sur "Répéter ?"
afficher une alerte avec le texte d'alerte en tant que critique boutons {"Oui", "Non"} bouton par défaut "Oui" bouton d'annulation "Non"
--> Résultat : {bouton renvoyé : "Continuer"}

--besoin du code de répétition ici

1voto

Ted Wrigley Points 725

Tout d'abord, vous compliquez votre vie en utilisant le presse-papiers et le script GUI. BBEdit dispose d'un dictionnaire complet conçu pour travailler avec du texte; j'ai modifié votre code pour l'utiliser.

Il vous suffit d'une boucle "repeat" et ensuite une conditionnelle exit repeat, comme suit :

-- d'abord trouver ou créer un document texte appelé 'Transcription.txt,' et le sélectionner
tell application "BBEdit"
    set target_doc_list to every document whose name is "Transcription.txt"
    if (count of target_doc_list) is 0 then
        set target_doc to make new text document with properties {name:"Transcription.txt"}
    else
        set target_doc to item 1 of target_doc_list
    end if
    select target_doc
end tell

-- boucle repeat pour parcourir les pages Safari
repeat
    tell application "Safari"
        set page_title to (name of current tab of front window)
        set page_text to (text of current tab of front window)
        close current tab of front window without saving
    end tell
    tell application "BBEdit"
        tell window 1
            set end of contents of first text document to return & return & page_text & return & return
        end tell
    end tell

    tell application "Safari"
        set next_page_title to (name of current tab of front window)
    end tell

    set theAlertText to "Terminé avec la page " & page_title & ". La prochaine page est intitulée '" & next_page_title & "'. Continuer?"
    display alert theAlertText as critical buttons {"Quitter", "Processus"} default button "Processus"
    if (button returned of the result) is "Quitter" then
        exit repeat
    end if
end repeat

Cela extrait le texte de l'onglet actuel de Safari et le place dans une variable, puis ajoute ce contenu de cette variable (rempli avec des retours à la ligne) au premier document dans la première fenêtre BBEdit. Il demande ensuite si vous souhaitez répéter avec l'onglet suivant, sortant de la boucle si vous dites 'Quitter'

Vous pourriez modifier ceci assez facilement pour sauter des onglets, ou pour sélectionner les onglets à traiter à l'avance. Faites-moi savoir si vous souhaitez des variations de ce type.

0voto

red_menace Points 1014

Vous pouvez simplement mettre tout dans une déclaration repeat, qui bouclera continuellement sauf si vous le spécifiez autrement - quitter la boîte de dialogue l'annulera et le script. Notez que BBEdit a un bon support de script, donc le truc System Events n'est pas nécessaire :

répéter -- pour toujours, ou du moins jusqu'à ce que vous quittiez

    dire à l'application "Safari"
        activer -- montrer sur quoi nous travaillons
        afficher alerte "Continuer?" message "Continuer le traitement et fermer l'onglet Safari actuel?" en tant que critique boutons {"Arrêter", "Continuer"} bouton par défaut "Continuer" bouton annuler "Arrêter"
        mettre le presse-papiers en tant que texte le texte de l'onglet actuel de la fenêtre principale
        fermer l'onglet actuel de la fenêtre principale
    fin dire

    dire à l'application "BBEdit"
        essayer -- protection
            obtenir le document actuel
        en cas d'erreur
            créer un nouveau document
        fin essayer
        dire au document actuel
            mettre leTexte en tant que texte (le presse-papiers)
            si leTexte n'est pas "" alors définir après (obtenir la dernière ligne) pour retourner et retourner leTexte
        fin dire
    fin dire
fin répéter

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