Applescript toggle to do ¿Esta vez y esa vez la próxima vez?

0

Digamos que tengo un Applescript que hace ESTE CÓDIGO. Y tengo otro Applescript que hace ESO CÓDIGO. Siempre los ejecuto en secuencia, pero nunca a intervalos regulares. En otras palabras, cualquiera que haya ejecutado la última vez, siempre lo haré la próxima vez.

¿Hay una manera de combinar los dos Applescripts en uno usando una simple palanca? Por ejemplo, al final de Applescript, podría escribir una variable al principio del script que se leerá la próxima vez, como EVENvariable o ODDvariable ... para que, cuando se ejecute el Applescript, sepa En qué estado se encontraba la última vez que corrió. ¿O hay una solución aún más simple y obvia que me estoy perdiendo?

    
pregunta 2oh1 15.12.2015 - 18:55

1 respuesta

2

Puede hacerlo configurando su propio parámetro predeterminado, para almacenar el valor entre usos / reinicios, etc. De lo contrario, Applescript no recordará su estado actual de alternancia.

Este es un ejemplo rápido que establecerá un parámetro definido por el usuario [reemplazar con la compañía real & / o nombre del producto & nombre de parámetro memorable si tiene uno; de lo contrario, los datos de ejemplo funcionarán bien] y luego dirá en voz alta, 'sí' o 'no', según el estado del cambio de parámetro predeterminado.

Puede ejecutarlo desde el script abierto o guardarlo como una aplicación.

set newTestParameter to "YES"
try
    set oldTestParameter to do shell script "defaults read com.myCo.myApp myParamSet"
    if oldTestParameter is in {"1", "YES"} then
        set newTestParameter to "NO"
    end if
end try
do shell script "defaults write com.myCo.myApp myParamSet " & newTestParameter

--your actual code, dependant on above switch
if newTestParameter is in {"1", "YES"} then
    say "Yes"
    -- run thisCode
else
    say "No"
    -- run thatCode
end if

En la primera ejecución, escribirá un nuevo archivo en ~/Library/Preferences llamado com.myCo.myApp.plist & contendrá un parámetro, con el estado actual de su conmutador, como este

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>myParamSet</key>
    <string>NO</string>
</dict>
</plist>

No necesita hacer nada para 'mantener' esto por su cuenta, simplemente puede seguir enviando su nuevo valor con cada ejecución de script.

    
respondido por el Tetsujin 15.12.2015 - 19:28

Lea otras preguntas en las etiquetas