BEDINGTE Freigabe der macOS Version Sequoia für tomedo® Alle Hinweise und Informationen finden Sie unter folgendem Link.
Hinweis: Zukünftige iOS tomedo Updates werden nur noch auf Geräten mit iOS 16 oder höher verfügbar sein.

Ich möchte in Tomedo Inhalte externer Dateien

wie beispielsweise

file "/Users/admin/Desktop/Daten/URL.txt"

in bestimmte Variablefelder eines CKE bzw. CustomFormulare übernehmen?

Ich habe mich auch über den gdt.Import bemüht, indem ich im CKE die Variabefelder mit einer Kennung versehen habe.

folgende Kennung verweist auf den Karteieintrag

0138402CKE

dann müssten die übrigen Informationen auch in die variablefelder übertragen, wenn deren Kennung mit der in der GDT Datei übereinstimmt. Dennoch funktioniert es nicht

Regex funktioniert nur, wenn bereits Daten in Tomedo vorhanden sind.

 

Gibt es andere Möglichkeiten über eine Schnittstelle den Inhalt externer Daten aus bestimmten Dateien auszulesen und diese dann direkt in ein Variablefeld eines CKE oder eines Formulars einzufügen?

 

Gefragt in Frage von (38.1k Punkte)
Bearbeitet von
0 Punkte

1 Antwort

Beste Antwort
Hallo Christian,

jetzt bin ich nicht ganz sicher, ob ich Deine Anforderungen richtig verstehe, aber mir der seit dem letzten Update zur Verfügung stehenden Kommando $[zwischenablage]$, das dann ja auch als Makro eingesetzt werden kann, und eine AppleScript oder Python-Skript, könnte so ein Import (unter Umständen) gelingen.
Beantwortet von (9.9k Punkte)
ausgewählt von
0 Punkte
Das ist ein schlauer Ansatz. Aber wenn zwischenzeitlich was anderes in der Zwischenablage ist, dann wird das fälschlicherweise übernommen.
Habe auch rechechiert. und das mit dem Skript könnte ein Lösung sein.
Ich habe es ja schon mal hingekriegt über den Lauschordner mittels gdt bestimmte daten in ein CKE zu bekommen. aber das funktionierrt nur wenn man eine Kartei verschiebt nicht wenn ein Kartei irgendwo an Ort und Stelle auf dem Rechner liegt und nur übernommen wird, wenn ein bestimmter <karteieintrag geöffnet wird.

Nun habe ich mal etwas gebastelt mit der (auch gerade neuen) Funktion, dass man aus AppleScript nun Aktionsketten aufrufen und dabei sogar Informationen an die Aktionskette übergeben kann, was supercool für bestimmte Fragestellungen ist. 

Hier das AppleScript, welches eine Datei "Text.txt", die auf dem Schreibtisch liegt und den Inhalt Deiner obigen Frage hat), ausliest und den Inhalt an die Aktionskette "Test-AK" übergibt. Diese AK öffnet ein Hinweisfenster und zeigt den (übergebenen) Inhalt im Fenster an.

set filePath to ((path to desktop folder as text) & "Text.txt")

display dialog filePath --Anzeige des gewählten Dateipfads (nur zur Fehlersuche nötig)

try
	set fileContent to read file filePath as «class utf8»
	set encodedContent to my encodeURL(fileContent)
	set tomedoURL to "tomedo://aktionskette?Test-AK&val=" & encodedContent
	open location tomedoURL
on error
	display dialog "Die Datei 'Text' wurde nicht gefunden oder konnte nicht gelesen werden!" buttons {"OK"} default button "OK"
end try

on encodeURL(this_text)
	set theEncodedText to do shell script "python3 -c 'import urllib.parse, sys; print(urllib.parse.quote(sys.stdin.read()))' <<< " & quoted form of this_text
	return theEncodedText
end encodeURL

Da haben wir parallel fast das gleiche Ergebnis erhalten.

set filePath to "/Users/admin/Desktop/GDT/URL.gdt"

 

try

set fileReference to open for access POSIX file filePath

set fileContents to read fileReference as «class utf8» -- UTF-8 Unterstützung

close access fileReference

set the clipboard to fileContents

display notification "Dateiinhalt wurde in die Zwischenablage kopiert" with title "AppleScript"

on error errorMessage

try

close access fileReference

end try

display notification "Fehler: " & errorMessage with title "AppleScript"

end try

 

Hier ist ein Vergleich der beiden AppleScripts:

1. Gemeinsame Aspekte

  • Beide Skripte lesen eine Datei von der Festplatte.
  • Beide Skripte verwenden UTF-8 (as «class utf8»), um Zeichen korrekt zu interpretieren.
  • Beide Skripte behandeln Fehlerfälle mit try ... on error.

2. Unterschiede zwischen den Skripten

Merkmal Skript 1 Skript 2
Dateipfad Fester Pfad: "/Users/admin/Desktop/GDT/URL.gdt" Dynamischer Pfad: Desktop-Ordner (Text.txt)
Fehlersuche Kein Debugging-Dialog Zeigt display dialog filePath zur Fehleranalyse
Ziel der Verarbeitung Kopiert den Dateiinhalt in die Zwischenablage Öffnet eine tomedo://-URL mit URL-kodierten Daten
Fehlerbehandlung Versucht explizit close access fileReference in on error Zeigt ein Dialogfenster mit einer Fehlermeldung
URL-Encoding Nicht vorhanden Nutzt encodeURL Funktion mit Python zur URL-Kodierung
Verarbeitung nach dem Lesen Dateiinhalt wird in die Zwischenablage kopiert Dateiinhalt wird für tomedo://-URL kodiert und geöffnet

3. Analyse & Verbesserungsvorschläge

Skript 1 (Zwischenablage)

✅ Vorteile:

  • Einfache Handhabung, weil es nur den Inhalt einer Datei in die Zwischenablage kopiert.
  • Umfassende Fehlerbehandlung mit on error.

❌ Mögliche Verbesserungen:

  • Statt POSIX file filePath wäre POSIX path of filePath sicherer.
  • Die try ... close access-Konstruktion kann verbessert werden, indem close access nur dann aufgerufen wird, wenn die Datei erfolgreich geöffnet wurde.

Skript 2 (tomedo:// URL)

✅ Vorteile:

  • Nutzt path to desktop folder, sodass es universell funktioniert.
  • Implementiert URL-Encoding über Python, um Sonderzeichen sicher zu übergeben.
  • Dynamische Pfaddefinition macht es flexibler.

❌ Mögliche Verbesserungen:

  • Python-Abhängigkeit entfernen: Das Encoding kann auch mit textutil oder AppleScript-eigenen Funktionen durchgeführt werden, um die Abhängigkeit von Python zu vermeiden.
  • Bessere Fehlerprüfung: Sollte überprüfen, ob filePath existiert, bevor read file filePath aufgerufen wird.

4. Fazit

  • Skript 1 eignet sich für einfache Anwendungsfälle (Dateiinhalt in Zwischenablage kopieren).
  • Skript 2 ist komplexer, weil es eine URL aufruft. Es ist flexibler wegen des relativen Desktop-Pfads und der URL-Kodierung.
  • Falls du nur Inhalte kopieren willst, ist Skript 1 besser. Falls du Daten weiterverarbeiten möchtest, ist Skript 2 nützlicher.

Hier ist eine verbesserte Version, die die besten Aspekte beider Skripte kombiniert:

Verbesserungen:

✅ Dynamischer Dateipfad – Automatische Auswahl des Desktop-Ordners, aber mit der Möglichkeit, ihn anzupassen.
✅ Sichere Fehlerbehandlung – Überprüfung, ob die Datei existiert, bevor sie gelesen wird.
✅ Zwischenablage & URL-Encoding – Wahlweise Kopieren des Inhalts in die Zwischenablage oder Erstellen einer tomedo://-URL.
✅ Kein Python-Abhängigkeit – Die URL-Encoding-Funktion wurde in AppleScript selbst umgesetzt.

set filePath to ((path to desktop folder as text) & "Text.txt") -- Datei auf dem Desktop

-- Überprüfung, ob die Datei existiert
tell application "System Events"
    if not (exists file filePath) then
        display dialog "Die Datei 'Text.txt' wurde nicht gefunden!" buttons {"OK"} default button "OK"
        return
    end if
end tell

try
    -- Dateiinhalt lesen (UTF-8)
    set fileContent to read file filePath as «class utf8»
    
    -- Dateiinhalt in die Zwischenablage kopieren
    set the clipboard to fileContent
    display notification "Dateiinhalt wurde in die Zwischenablage kopiert." with title "AppleScript"
    
    -- URL-Encoding für Sonderzeichen
    set encodedContent to my encodeURL(fileContent)
    
    -- Tomedo-URL aufrufen (optional)
    set tomedoURL to "tomedo://aktionskette?Test-AK&val=" & encodedContent
    open location tomedoURL
    
on error errorMessage
    display dialog "Fehler: " & errorMessage buttons {"OK"} default button "OK"
end try

-- Funktion für URL-Encoding ohne Python
on encodeURL(this_text)
    set theEncodedText to ""
    set allowedChars to "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~"
    
    repeat with i from 1 to length of this_text
        set this_char to text i of this_text
        if this_char is in allowedChars then
            set theEncodedText to theEncodedText & this_char
        else
            set theEncodedText to theEncodedText & "%" & my decToHex((ASCII number this_char))
        end if
    end repeat
    return theEncodedText
end encodeURL

-- Dezimal zu Hexadezimal Konvertierung (für URL-Encoding)
on decToHex(n)
    set hexDigits to "0123456789ABCDEF"
    set highDigit to (n div 16) + 1
    set lowDigit to (n mod 16) + 1
    return (text highDigit of hexDigits) & (text lowDigit of hexDigits)
end decToHex

Wie funktioniert das Skript?

  1. Dateipfad wird automatisch auf Desktop/Text.txt gesetzt.
  2. Überprüfung, ob die Datei existiert, bevor sie gelesen wird.
  3. Liest die Datei als UTF-8 und speichert den Inhalt in die Zwischenablage.
  4. Zeigt eine Benachrichtigung, dass die Datei erfolgreich verarbeitet wurde.
  5. Kodiert den Inhalt in eine URL (ohne Python-Abhängigkeit!).
  6. Erstellt und öffnet eine tomedo://-URL, falls nötig.
  7. Sichere Fehlerbehandlung – Falls ein Fehler auftritt, wird ein Dialog angezeigt.

Was ist besser an diesem Skript?

✔ Flexible Nutzung – Kopiert den Text und erstellt eine URL.
✔ Kein Python erforderlich – Alle Funktionen sind in AppleScript selbst umgesetzt.
✔ Bessere Fehlerbehandlung – Überprüft, ob die Datei existiert, bevor sie gelesen wird.
✔ Volle Kontrolle – Wenn du nur den Inhalt kopieren möchtest, kannst du den open location tomedoURL-Teil entfernen.


Cooles Projekt: echte Schwarmintelligenz mit einer Prise ChatGPT...

Macht viele Auswertungen leichter.smiley

19,272 Beiträge
27,667 Antworten
49,780 Kommentare
31,754 Nutzer