Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

Copy&Paste mit dem Automator
#1

Anfängerfrage zum Automator...

Ich möchte einen Copy&Paste Job automatisieren. Natürlich soll der Textinhalt, der kopiert werden soll, nicht immer der gleiche sein sondern sich dynamisch verändern.

Nun zeichne ich den Arbeitsvorgang auf...und beim zweiten Ablauf ist Maus und Tastatur etc absolut identisch, nur das der Textinhalt sich geändert hat.
Leider zeichnet der Automator aber genau das auf, was es da zu kopieren gibt und kommt logischer Weise beim Abspielen an das Problem, das da der Text nicht da ist der kopiert werden soll.

Was mache ich falsch?
(Wie Eingangs geschrieben....blutiger Anfänger!

Daaaanke!
Zitieren
#2

Hi

Kannst Du mal genauer beschreiben was Du vorhast? Möchtest Du einen Text von Hand markieren und dann automatisiert irgenwo einfügen? Oder soll der ganze sichtbare Text markiert werden? Wie sehen die Arbeitsschritte genau aus, die Du automatisieren möchtest?

Gruss

lifeflow
Zitieren
#3

Ja klar, das ist der Plan:
Eigentlich will ich eine Textdatei in eine Erinnerungsliste importieren.
Die Textdatei ist so aufgebaut:
Text1
Text2
Text3
...

Nun soll jeweils die erste Zeile der Textdatei markiert werden, Ausschneiden und dann in Erinnerungen als neue Erinnerung einfügen (ohne irgendwelche Termine etc) also nur Apfel + X und Apfel +V.
Durchs Ausscheiden ist ja quasi die erste Zeile immer die zu Kopierende.
Zitieren
#4

Ok, ich habe hier mal etwas für Dich...

Mit Automator kenne ich mich auch nicht besonders gut aus. Ich habe hier mal etwas in Applescript gebastelt. Es handelt sich dabei um ein kleines Droplet. Du kannst die App an beliebiger, gut erreichbarer Stelle ablegen, z.B. auf dem Desktop. Wenn Du nun ein Textfile auf das Droplet ziehst, dann passiert folgendes:

- Die App versucht die Datei zu öffnen und liest den Inhalt in einem Rutsch ein.
- Es wird nun festgestellt, wieviele Zeilenumbrüche vorhanden sind.
- Der Text wird in einzelne Zeilen aufgeteilt.
- Erinnerungen wird gestartet.
- Für jede Textzeile wird ein neuer Eintrag erstellt.
- Die importierte Textdatei wird in den Papierkorb verschoben.

Die Textdatei wird nicht verändert, sondern nur in den Papierkorb verschoben. Sollte etwas schiefgelaufen sein, kann man die Datei so problemlos wiederherstellen.

Binärdateien, bzw. Dateien, die sich nicht öffnen lassen, werden ignoriert. Diese Dateien werden auch nicht gelöscht.

Ich hoffe, das entspricht ungefähr Deinen Erwartungen. Das Droplet ist noch nicht ausführlich getestet. Also fang am besten erst mal mit einem kleinen Import an, so ungefähr 5-10 Zeilen. Das minimiert den Aufwand, wenn etwas schief läuft und Du die Einträge wieder entfernen musst.

Gruss

lifeflow

Hier ist das fertige Programm:
.zip DropFilesHere.app.zip Größe: 56,3 KB  Downloads: 109


Und hier noch der Scriptcode, für die Interessierten:

Code:
on open theDropped
    set MyStream to ""
    set NumberOfLines to 0
    set TheLine to ""
    set TheCounter to 0
    set IsImported to 0
    tell application "Finder"
        set myPath to theDropped as text
        if exists file myPath then
            try
                set OpenMyFile to open for access myPath
                set MyStream to read OpenMyFile as «class utf8»
                close access OpenMyFile
                set MyStream to MyStream as text
            on error
                close access OpenMyFile
            end try
        end if
    end tell
    if MyStream > "" then set NumberOfLines to count of paragraphs in MyStream
    repeat NumberOfLines times
        set TheCounter to TheCounter + 1
        set TheLine to paragraph TheCounter of MyStream
        if TheLine is greater than "" then
            tell application "Reminders"
                activate
                set IsImported to IsImported + 1
                try
                    set newReminder to make new reminder with properties {name:TheLine}
                on error
                    set newReminder to make new reminder with properties {name:TheLine}
                end try
            end tell
        end if
    end repeat
    if IsImported > 0 then tell application "Finder" to move file myPath to trash
end open
Zitieren
#5

Hier noch eine zweite Version...

Diese ist von der Funktion her identisch zur ersten Version. Aber ich habe hier noch eine Abfrage eingebaut. Die App zeigt nun jede Zeile der Textdatei an. Du kannst jeweils bestimmen, ob Du die Zeile übernehmen (Save), überspringen (Skip) oder den Import abbrechen (Exit) möchtest.

   

Gruss

lifeflow

.zip DropFilesHere.app.zip Größe: 57,35 KB  Downloads: 110


Hier noch der Code dazu:

Code:
on open theDropped
    set MyStream to ""
    set NumberOfLines to 0
    set TheLine to ""
    set TheCounter to 0
    set IsImported to 0
    set ButtonPressed to ""
    set TheTitle to ""
    tell application "Finder"
        set myPath to theDropped as text
        if exists file myPath then
            try
                set OpenMyFile to open for access myPath
                set MyStream to read OpenMyFile as «class utf8»
                close access OpenMyFile
                set MyStream to MyStream as text
            on error
                close access OpenMyFile
            end try
        end if
    end tell
    if MyStream > "" then set NumberOfLines to count of paragraphs in MyStream
    if paragraph NumberOfLines of MyStream = "" then set NumberOfLines to NumberOfLines - 1
    repeat NumberOfLines times
        set TheCounter to TheCounter + 1
        set TheLine to paragraph TheCounter of MyStream
        if TheLine is greater than "" then
            set TheTitle to "Zeile " & TheCounter & " von " & NumberOfLines as text
            set ButtonPressed to button returned of (display dialog TheLine buttons {"Save", "Skip", "Exit"} with title TheTitle) as text
            if ButtonPressed = "Exit" then
                set IsImported to 0
                exit repeat
            end if
            if ButtonPressed = "Save" then
                tell application "Reminders"
                    activate
                    set IsImported to IsImported + 1
                    try
                        set newReminder to make new reminder with properties {name:TheLine}
                    on error
                        set newReminder to make new reminder with properties {name:TheLine}
                    end try
                end tell
            end if
        end if
    end repeat
    if IsImported > 0 then tell application "Finder" to move file myPath to trash
end open
Zitieren


Möglicherweise verwandte Themen…
Thema / Verfasser Antworten Ansichten Letzter Beitrag
Automator
Wimmy
Letzter Beitrag von Wimmy
30.11.2013, 16:10



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste