Applescript cambia para hacer esto, esta vez, y eso, la próxima vez?

0

Digamos que tengo un Applescript que hace ESTE CÓDIGO. Y tengo otro Applescript que hace ESE CÓDIGO. Siempre los ejecuto en secuencia, pero nunca a intervalos regulares. En otras palabras, el que corrí la última vez, siempre correré el otro la próxima vez.

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

2oh1
fuente

Respuestas:

3

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

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

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 ~/Library/Preferencesllamado com.myCo.myApp.plisty contendrá un parámetro, con el estado actual de su alternador, 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.

Tetsujin
fuente
¡Gracias, gracias, gracias! Esto funciona como un encanto.
2oh1