[GastForen Programmierung/Entwicklung AppleScript Inhalt der Zwischenablage in Variable laden

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

Inhalt der Zwischenablage in Variable laden

Goar
Beiträge gesamt: 395

25. Jun 2023, 21:11
Beitrag # 1 von 6
Bewertung:
(4524 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag zusammen,

wenn ich mit Befehl-c etwas in die Zwischenablage kopiere, bekomme ich es mit
Code
set a to the clipboard 

in die Variable a.

Wenn ich anschließend in Safari eine Seite aufrufe und dieses Skript ablaufen lasse,
Code
tell application "Safari" 
activate
end tell

tell application "System Events"
tell process "Safari"
keystroke "a" using command down
keystroke "c" using command down
end tell
end tell
set webText to the clipboard as Unicode text

landet in der Variablen webText der gleiche Inhalt, den ich vorher in die Zwischenablage kopiert habe, obwohl sich jetzt der Text der aktuellen Webseite im Zwischenspeicher befindet; das habe ich kontrolliert über Finder -> Bearbeiten -> Zwischenablage einblenden.

Wenn ich die aktuelle Webseite nicht verändere, sondern lediglich das Skript noch einmal starte, landet der Text der Webseite endlich doch in der Variablen webText.

Das gleiche Verhalten tritt auf, wenn ich mit menu_click den Text der Webseite auswähle und kopiere.
Also auch auf diese Weise landet der kopierte Inhalt erst beim zweiten Skriptlauf in der Variablen

Code
tell application "Safari" to activate 

menu_click({"Safari", "Bearbeiten", "Alles auswählen"})
menu_click({"Safari", "Bearbeiten", "Kopieren"})

Der ganze Trick mit »menu_click«, by Jacob Rus, September 2006:
https://gist.github.com/Xjs/1142026
https://pastebin.com/P1h4bSE9

Kann jemand dieses Verhalten im Umgang mit dem Zwischenspeicher erklären?
Wie kann ich erreichen, dass die kopierten Inhalte schon beim ersten Skriptlauf in der Variablen landen?

Da bin ich neugierig
X

Inhalt der Zwischenablage in Variable laden

TMA
Beiträge gesamt: 399

10. Jul 2023, 08:23
Beitrag # 2 von 6
Beitrag ID: #586374
Bewertung:
(4315 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,
das Verhalten kann ich dir leider nicht erklären, vielleicht hilft dir dieser Thread aus einem anderen Forum weiter, wo wohl das vorherige Löschen der Zwischenablage in einem ähnlichen Fall für Abhilfe sorgen konnte:
https://www.macscripter.net/...-with-asobjc/74796/2

Gruß
TMA


als Antwort auf: [#586278]

Inhalt der Zwischenablage in Variable laden

Goar
Beiträge gesamt: 395

10. Jul 2023, 10:03
Beitrag # 3 von 6
Beitrag ID: #586375
Bewertung:
(4300 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,

hat nicht geklappt.
Ganz gleich, ob ich die Zwischenablage vor Start des Skripts leere oder diese Leerung in das Skript einbaue, beim ersten Skriptlauf ist die Variable webText leer.

Es nützt auch nichts, repeat 2 times um einen der tell-Wickel (System Events oder Safari) zu legen.
Auch hilft es nicht, die einzelnen Elemente oder tell-Wickel des Skripts – oder alle – im Skript mehrmals ablaufen zu lassen: Beim ersten Skriptdurchlauf landet in der Variablen das, was sich vor Skriptstart in der Zwischenablage befunden hat.

Weiterhin neugierig


als Antwort auf: [#586374]

Inhalt der Zwischenablage in Variable laden

Klaus79
Beiträge gesamt: 341

16. Jul 2023, 22:29
Beitrag # 4 von 6
Beitrag ID: #586395
Bewertung:
(3975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Goar,

ich habe von Applescript absolut keine Ahnung, aber vielleicht hilft ja trotzdem folgender (theoretischer) Workaround:

Kopiere über das Script und dann schließe das Script (Quit)! Danach rufst Du es erneut auf. Deiner Angabe zufolge müsste jetzt das zuletzt Kopierte in der Zwischenablage sein.

Und den ganzen Vorgang (Kopieren, Schließen, neu Aufrufen) könnte man dann in das Script einbinden (unter VBA wäre das möglich) - oder ein zweites Scrpt aufrufen, dass dann mit der Zwischenablage weiter arbeitet.

Ist natürlich keine Erklärung, aber wenn's funktioniert(?) zumindest eine Lösung ...

Gruß
Klaus


als Antwort auf: [#586375]

Inhalt der Zwischenablage in Variable laden

Goar
Beiträge gesamt: 395

17. Jul 2023, 10:16
Beitrag # 5 von 6
Beitrag ID: #586402
Bewertung:
(3925 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Klaus,

mit deinem Vorschlag hast du ins Schwarze getroffen!

Das ursprüngliche menu–click-Skript set_clipboard.scpt habe ich durch eine return-Zeile ergänzt und in einen on-run-Wickel gestellt:

Code
on run webText 
-- Text aus der offenen WebsSeite aufnehmen
tell application "Safari" to activate

menu_click({"Safari", "Bearbeiten", "Alles auswählen"})
menu_click({"Safari", "Bearbeiten", "Kopieren"})

set webText to (the clipboard) as Unicode text
return webText as text
end run

Die Wiedergabe der beiden menu_click-Handler habe ich mir hier ebenfalls gespart, s.o.

In einem neuen Skript, das auf der gleichen Ebene abgelegt ist, rufe ich das Skript set_clipboard.scpt zweimal auf:

Code
-- dieses Skript benutzt das Skriptmodul set_clipboard.scpt 

-- über den Eigenpfad dieses Skripts werden die benötigten Pfade ermittelt
activate
set ownPath to path to as string

set AppleScript's text item delimiters to ":"
set folderPath to (text items 1 thru -2 of ownPath) as string
-- der eigentliche Skriptinhalt ist ausgelagert:
set ascrFile to folderPath & ":" & "set_clipboard.scpt"
set AppleScript's text item delimiters to ""

set ascr to load script file ascrFile
set webText to (run script ascr)
(*
-- um das Ergebnis nach dem ersten Durchlauf zu testen
tell application "BBEdit"
activate
set contents of document 1 to webText
end tell
delay 5
*)
set webText to (run script ascr)

tell application "BBEdit"
activate
set contents of document 1 to webText
end tell

Den Test nach dem ersten Durchlauf habe ich schon auskommentiert.
So klappt es, wunderbar.

Es klappt übrigens nicht mit der keystroke-Version!
Aber dem nachzulaufen fehlt mir jetzt jegliche Motivation.

Vielen Dank


als Antwort auf: [#586395]
(Dieser Beitrag wurde von Goar am 17. Jul 2023, 10:18 geändert)

Inhalt der Zwischenablage in Variable laden

Klaus79
Beiträge gesamt: 341

17. Jul 2023, 15:46
Beitrag # 6 von 6
Beitrag ID: #586412
Bewertung:
(3878 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Goar,

das freut mich sehr! Und vielen Dank für Dein Feedback.

Gruß aus Hamburg
Klaus


als Antwort auf: [#586402]
X

Aktuell

PDF / Print
pitstopPro_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!