[GastForen Programmierung/Entwicklung AppleScript AppleScript - Variable nach jeder Ausführung überschreiben

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

AppleScript - Variable nach jeder Ausführung überschreiben

1Frage_abc
Beiträge gesamt: 1

15. Okt 2019, 15:05
Beitrag # 1 von 3
Bewertung:
(30968 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen,
Ich bin recht neu bei AppleScript und baue nun einen ersten kleinen Script. Die Besonderheit ist, dass am Anfang des scripts ein Link als Variable festgelegt wird. Während des scripts wird ein neuer Link in die Zwischenablage kopiert, woraufhin dieser mit dem ursprünglichen Link abgeglichen wird. Falls er diesem nicht entspricht, folgen einige Handlungen auf der Website und der Script ist zu Ende. Das Problem ist, dass der zweite Link beim nächsten Ausführen des Scripts als "erster" Link dienen soll, d.h. als Grundlage zum vergleich mit einem weiteren Script.

Bisher habe Ich das Problem mit UI Programmierung gelöst, was meiner Meinung nach aber keine ideale Lösung ist. Dabei "drückt" das Script am Ende über dem Quellcode cmd+f und sucht nach den ersten Buchstaben des ersten Links, wählt diesen aus, löscht die Ziffern im Quellcode und drückt setzt an diese Stelle schließlich den neuen Link ein.

Denkt Ihr es gibt da evtl. eine bessere Lösung ohne UI Programmierung? Ich hätte da z.B. an Variablen gedacht, welche Werte aus einem Datensatz nehmen, welchem diese Werte wiederum zuvor zugewiesen wurden (so eine Art größerer Zwischenspeicher)

Mich würde echt interessieren wie man so ein Problem lösen kann, im Internet findet man zu so speziellen Anliegen ja leider kaum hilfreiche Infos. Deshalb wäre Ich sehr dankbar, wenn Ihr mir da ein paar Tipps gebt oder einfach mal eure Meinung bzw. euer Wissen in die Kommentare schreibt.

Vielen Dank im Voraus!
X

AppleScript - Variable nach jeder Ausführung überschreiben

Hans Haesler
  
Beiträge gesamt: 5826

15. Okt 2019, 17:47
Beitrag # 2 von 3
Beitrag ID: #572307
Bewertung:
(30940 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo 1Frage_abc,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Zur Lösung Deines Problems habe ich zwei Ideen. Aber ich muss zuerst prüfen, ob eine davon brauchbar ist. Doch vermutlich werde ich es erst morgen Vormittag anpacken können.

Gruss, Hans


als Antwort auf: [#572300]

AppleScript - Variable nach jeder Ausführung überschreiben

Hans Haesler
  
Beiträge gesamt: 5826

16. Okt 2019, 06:37
Beitrag # 3 von 3
Beitrag ID: #572312
Bewertung:
(30904 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen 1Frage_abc,

nachstehend eine mögliche Lösung. Sie setzt voraus, dass sich die Textdatei "Aktueller_Link.txt" auf dem Schreibtisch befindet und den aktuellen Link enthält.
Der Name der Datei und der Speicherort kann geändert werden (z.B. "Alter_Link.txt" und ein Pfad zu einem Ordner in "Dokumente").

*****
Das Script prüft, ob die Textdatei vorhanden ist. Falls ja, wird deren Inhalt der Variablen 'oldLink' zugewiesen ...

... und der Variablen 'newLink' der neue Link (dieser ist hier zum Testen fix im Code definiert).

Die beiden Links werden verglichen. Stimmen sie nicht überein, wird der neue in die Textdatei geschrieben.

Mit der folgenden Zeile wird zuvor der Inhalt der Datei gelöscht. Das eof steht für end of file. Das Ende der Datei wird auf Null (= den Anfang) gesetzt.

Code
set eof of file linkFile to 0 


Und hier der Code, mit ein paar Kommentaren versehen:

Code
# der Dateiname ... 
set fileName to "Aktueller_Link.txt"
# ... und der volle Pfad
set linkFile to (path to desktop as Unicode text) & fileName

# prüfen, ob die Textadtei existiert
tell application "Finder"
if not (linkFile exists) then
display dialog "Die Datei \"" & fileName & "\" kann nicht gefunden werden." buttons "OK" default button 1 with icon 0
# die folgende Zeile bricht die Ausführung ab
error number -128
end if
end tell

# den gespeicherten Link einlesen
set oldLink to my readFile(linkFile)

# der neue Link
set newLink to "https://www.youtube.com/watch?v=YfXmUUS4Jqo"

# Übereinstimmung prüfen
if newLink is not oldLink then
my writeFile(newLink, linkFile)
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
else
display dialog "Identische Links" buttons "OK" default button 1 with icon 2 giving up after 2
end if

### die Handler ############################
# dieser Handler liest die Datei ...
on readFile(linkFile)
set curLink to read file linkFile
end readFile

# ... und dieser Handler schreibt den neuen hinein
on writeFile(newLink, linkFile)
try
open for access file linkFile with write permission
set eof of file linkFile to 0
write newLink to file linkFile
close access file linkFile
on error
try
close access file linkFile
end try
end try
end writeFile

Hoffe, dass das schon einigermassen brauchbar sein wird.

Gruss, Hans


als Antwort auf: [#572300]