[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:
(4943 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:
(4734 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:
(4719 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:
(4394 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:
(4344 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:
(4297 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

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
18.06.2024

Online
Dienstag, 18. Juni 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: 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? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

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

So optimieren Sie Ihren LFP-Workflow
Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: 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? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

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

So optimieren Sie Ihren LFP-Workflow