Worddatei als PDF speichern per Skript

Diskutiere das Thema Worddatei als PDF speichern per Skript im Forum Scripting und Automatisierung.

Schlagworte:
  1. hopper2506

    hopper2506 Thread Starter MacUser Mitglied

    Beiträge:
    3
    Zustimmungen:
    0
    Mitglied seit:
    19.04.2018
    Hallo zusammen,
    ich habe leider nicht viel Ahnung vom AppleScript und hoffe, von euch einen Tipp zu bekommen. Ich möchte ein Skript nutzen, dass Word-Dateien per Kontextmenü als PDF speichert. Ein solches habe ich auch gefunden, es funktioniert aber nicht so, wie ich es möchte, da Word 2016 für jeden Dateipfad die Zugriffsermächtigung durch den Benutzer erbittet. Das ist für natürlich extrem lästig, da ich dann genauso gut selber die PDF über Word speichern kann. Meine Idee ist es daher, das Dokument zunächst in einen Ordner zu verschieben, für den ich einmalig den Zugriff gewähre und für den ab dann nicht mehr gefragt wird. Und diese Verschiebung bereitet mir leider Probleme und alle meine Versuche waren leider von keinem Erfolg gekrönt.

    Hier zunächst mein Skript:

    property thelist : {"doc", "docx"}
    on run {input, parameters}
    set output to {}
    tell application "Microsoft Word" to activate
    tell application "Microsoft Word" to set theolddefaultpath to get default file path file path type documents path

    repeat with x in input
    try
    set theDoc to contents of x
    tell application "Finder"
    set theFilePath to container of theDoc as text
    set ext to name extension of theDoc
    if ext is in thelist then
    set theName to name of theDoc
    copy length of theName to l
    copy length of ext to xxl
    set n to l - exl - 1
    copy characters 1 through n of theName as string to theFilename



    #Hier soll die Datei kopiert und (im Skript) als theDocTemp benannt werden.

    set namepdf to theFilename & ".pdf"
    set namedocx to theFilename & ".docx"
    set namedoc to theFilename & ".doc"

    tell application "Microsoft Word"
    set default file path file path type documents path path home_path
    open theDocTemp as alias
    set theActiveDoc to the active document
    save as theActiveDoc file format format PDF file name namepdf
    copy (POSIX path of (theFilePath & namepdf as string)) to end of output
    close theActiveDoc
    end tell

    if file namedocx exists then
    delete file namedocx
    end if

    if file namedoc exists then
    delete file namedoc
    end if

    #Hier soll nun die PDF zurück an den Ursprungsort geschoben werden und das temporäre Dokument gelöscht werden.

    end if
    end tell
    end try
    end repeat
    tell application "Microsoft Word" to set default file path file path type documents path path theolddefaultpath
    return output
    end run

    Könnt ihr mir helfen?
    Danke und Gruß,
    hopper
     
  2. ruerueka

    ruerueka Mitglied

    Beiträge:
    1.277
    Zustimmungen:
    173
    Mitglied seit:
    04.04.2004
    Willkommen im Forum.
    Deine Verschiebeaktion über Word finde ich recht umständlich, du musst doch nicht alles selbst neu erfinden.
    Was sprich gegen eine simple Aktion wie die nachstehende?
    Code:
    tell application "Finder" to move entire contents of folder "dein:pfad:zum:quellordner" to folder "dein:pfad:zum:zielordner"
    
    Ist übrigens nicht von mir, habe ich hier gefunden, hab grade keine nMac vor mir...:
    https://stackoverflow.com/questions/10763688/moving-files-and-folders-with-applescript

    Edit: du könntest auch "move" in einer Schleife nehmen, hab ich zum Beispiel hier gefunden (die erste Antwort):
    https://stackoverflow.com/questions...h-name-begins-with-first-7-characters-of?rq=1

    Viel Erfolg!

    ps: Code-Tags helfen den Lesern... findet man unter "Einfügen" ...
     
  3. hopper2506

    hopper2506 Thread Starter MacUser Mitglied

    Beiträge:
    3
    Zustimmungen:
    0
    Mitglied seit:
    19.04.2018
    Hallo ruerueka,
    danke für deine Antwort.
    Vielleicht verstehe ich ja auch den Code nicht richtig, aber die "simple Aktion" arbeitet doch mit konkreten Pfaden, oder? Da ich mein Skript als Dienst nutzen will, soll der Quellordner variabel festgelegt sein. Außerdem möchte ich ja nur die eine Datei und nicht den ganzen Inhalt des Ordners verschieben.
    Mein eigentliches Problem ist, dass ich nicht weiß, wie ich die Pfade vernünftig definiere. Ich habe da schon alles mögliche probiert, aber das Skript tut nichts.
    Beispiel:
    Mein obiges Skript definiert eine Variable theDoc und ich glaube, dass dies mein rechtsgeklicktes Dokument (inklusive Pfad) ist. Ich möchte jetzt also dieses Dokument in mein Benutzerverzeichnis kopieren.
    Wenn ich aber dem Finder sage, dass er
    "copy file theDoc to home folder"
    ausführen soll, passiert nichts.
    An welcher Stelle verstehe ich etwas nicht?
    Gruß
     
  4. ruerueka

    ruerueka Mitglied

    Beiträge:
    1.277
    Zustimmungen:
    173
    Mitglied seit:
    04.04.2004
    Einen Service habe ich immer nur über den Automator erstellt, da kann man das einfach einstellen ("Dienst empfängt" -> "Dateien und Ordner" in ".
    Eigentlich sollte Word die möglichen Aktionen auch in Automator anbieten, d.h. du solltest gar nicht selbst scripten müssen :)
    Zu AppleScript und Finder hab ich noch folgenden Link:
    https://manuals.info.apple.com/MANUALS/1000/MA1360/en_US/AppleScriptFinderGuide.pdf
    zuum Automator:
    https://support.apple.com/de-de/HT2488

    Ich kann deine Aufgabenstellung leider nicht nachbauen, da ich selbst kein macOS mehr nutze (bin nur noch der Apple-Adminsitrator für meine Geschwister und Eltern).
     
  5. hopper2506

    hopper2506 Thread Starter MacUser Mitglied

    Beiträge:
    3
    Zustimmungen:
    0
    Mitglied seit:
    19.04.2018
    Meines Wissens kann der Automator das nicht ohne AppleScript, da ich nicht den angegebenen Pfad als Variable speichern und einige Schritte später wieder aufgreifen kann!
    Word selbst bietet keine Automator-Aktionen mehr an, es gibt noch veraltete, die aber auch nicht das liefern, was ich benötige.

    Vielleicht weiß ja jemand anders Rat?
     
Die Seite wird geladen...
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite weitersurfst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...