Worddatei als PDF speichern per Skript

H

hopper2506

Mitglied
Thread Starter
Dabei seit
19.04.2018
Beiträge
3
Reaktionspunkte
0
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
 
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" ...
 
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ß
 
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).
 
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?
 
Zurück
Oben Unten