I'm trying to use automator to run an applescript to save illustrator files in their native folder with a new name. Any help with my applescript on this? Have to declare a path.
on run {input, parameters}
tell application "Adobe Illustrator"
set allMyItems to every path item of current document whose fill color is {cyan:0.0, magenta:0.0, yellow:0.0 black:100.0}
repeat with myItem in allMyItems
set fill color of myItem to {cyan:0.0, magenta:0.0, yellow:0.0 black:0.0}
end repeat
set theDestination to path to parentfolder
save current document as eps
close current document
end tell
return input
end run
Related
I am trying to build a Quick Action in Automator that I can run on any folder, which would run the following AppleScript on each of the .pdf files inside that folder one by one - waiting for the first to finish, before starting again on the next file.
Currently I have only the AppleScript code that I want to run, but I can't figure out how to attach it to a Quick Action and make it run the code on each pdf item inside.
Note: The number of PDF files in the folder can be different each time.
on run {input, parameters}
set theFile to input's item 1
set theSeconds to time of (current date)
tell application "Finder"
set theDuplicate to duplicate file "Macintosh HD:Users:username:Documents:IddTest:template.indd"
end tell
tell application "Adobe InDesign 2020" to open file (theDuplicate as string)
tell application "Adobe InDesign 2020"
if document 1 exists then
repeat 34 times
tell document 1
relink link "placeholder.pdf" to theFile
try
update link "placeholder.pdf"
end try
end tell
end repeat
end if
close document 1 saving yes
end tell
tell application "Finder"
set name of theDuplicate to "" & theSeconds & ".indd"
end tell
end run
Note that I do not have Adobe InDesign 2020 so my rework of your AppleScript code has not been tested, however I believe it should work.
In Automator create a new workflow as a Quick Action with setting as shown in the image below.
Add a Get Folder Contents action.
Add a Filter Finder Items action with setting as shown in the image below.
Add a Run AppleScript action replacing the default code with the AppleScript code below.
Example AppleScript code:
on run {input, parameters}
repeat with thisFile in input
set theSeconds to time of (current date)
tell application "Finder"
set theDuplicate to duplicate file "Macintosh HD:Users:username:Documents:IddTest:template.indd"
end tell
tell application "Adobe InDesign 2020"
open file (theDuplicate as string)
delay 2
if document 1 exists then
repeat 34 times
tell document 1
relink link "placeholder.pdf" to thisFile
try
update link "placeholder.pdf"
end try
end tell
end repeat
end if
close document 1 saving yes
end tell
tell application "Finder"
set name of theDuplicate to "" & theSeconds & ".indd"
end tell
end repeat
end run
I am trying to make a Folder action in Automator, which duplicates specific .indd file, opens it in InDesign and then relinks "test1.png" with a file that was dropped in the folder, which is bound to the Automator action.
I can get it working with hardcoded file path, but if I try getting the file path dynamically it gives me error "Cannot create the link resource from the given URI"
It's probably something very simple, but I am new to AppleScript and can't figure it out.
Code:
on run {input, parameters}
tell application "Finder"
set filename to name of file input
end tell
tell application "Adobe InDesign 2020"
if document 1 exists then
tell document 1
relink link "test1.png" to "Macintosh HD" & filename
try
update link "test1.png"
end try
end tell
end if
end tell
return input
end run
I don't have Adobe InDesign to be able to test this but try this.
on run {input, parameters}
set theFile to input's item 1
tell application "Adobe InDesign 2020"
if document 1 exists then
tell document 1
relink link "test1.png" to theFile
try
update link "test1.png"
end try
end tell
end if
end tell
end run
Scratching my head after reading lots of different threads on this and tried a bunch of scripts but none seem to work.
I'd like to use Automator to automate Word 2016 conversion of a selection of docx files to pdf.
Used the following Automator Service:
Used the following script:
on run {input, parameters}
tell application id "com.microsoft.Word"
activate
open input
set doc to name of active window
set theOutputPath to (input & ".pdf")
save as active document file name theOutputPath file format format PDF
end tell
end run
Which results in error: Microsoft Word got an error: active document doesn’t understand the “save as” message.
The main issue is that input is a list. You have to use a repeat loop to process each file separately
I added a line to close the current document after having been converted
on run {input, parameters}
tell application id "com.microsoft.Word"
activate
repeat with aFile in input
open aFile
set theOutputPath to ((aFile as text) & ".pdf")
tell active document
save as it file name theOutputPath file format format PDF
close saving no
end tell
end repeat
end tell
end run
To prevent the problem discussed in #vadian's answer, save the file first to Word's default folder (that's usually ~/Library/Containers/com.microsoft.Word/Data/Documents) and then move the file somewhere else.
on run {input, parameters}
repeat with aFile in input
tell application "System Events"
set inputFile to disk item (aFile as text)
set outputFileName to (((name of inputFile) as text) & ".pdf")
end tell
tell application id "com.microsoft.Word"
activate
open aFile
tell active document
save as it file name outputFileName file format format PDF
close saving no
end tell
set defaultPath to get default file path file path type documents path
end tell
tell application "System Events"
set outputPath to (container of inputFile)
set outputFile to disk item outputFileName of folder defaultPath
move outputFile to outputPath
end tell
end repeat
return input
end run
I'm trying to create an Automator droplet that allows me to pass one or more video files to an Applescript that then saves out reference files with "_ref.mov" appended to the file name by using QuickTime Player 7.
Saving as a reference is the default save method, which is why I'm not using save reference file function (also, because I can't find any docs on the using descriptors attribute object.)
I found this script on another forum, and it works, but it doesn't accomplish exactly what I need because it requires that 1) a file is open and 2) the user manually specifies an output file name.
on run {input, parameters}
tell application "QuickTime Player 7"
activate
try
if not (exists document 1) then display dialog "please open a quicktime movie." buttons {"cancel"} default button 1 with icon 1
set theFile to (choose file name)
save document 1 in theFile
close document 1
end try
end tell
return input
end run
I've tried to make changes to accomplish what I need, but my changes break the script:
on run {input, parameters}
tell application "QuickTime Player 7"
activate
try
open input
set theFile to ((path of input) & "_ref.mov))
save document 1 in theFile
close document 1
end try
end tell
return input
end run
I've also tried:
set theFile to (((path of input) & "_ref.mov") as text) doesn't work
either does as alias or as string
Not sure where I'm going wrong. Please help if you can!
this is the script I'm trying to use:
on open thisItem
set this_folder to (the POSIX path of thisItem)
set export_folder to "Macintosh HD:Users:j****.*******:Desktop:AUTOMATOR:export"
set pdf_folder to "Macintosh HD:Users:j****.*****:Desktop:AUTOMATOR:PDF"
tell application "Adobe Illustrator" to open thisItem
tell application "Adobe Illustrator" to save current document in export_folder as pdf with options {class:PDF save options, PDF preset:"Low res proofing"}
tell application "Adobe Illustrator" to close current document
tell application "UltraLowPDF" to open
tell application "Finder" to move every file of folder "Macintosh HD:Users:j*****.*****:Desktop:AUTOMATOR:PDF" to container of this_folder
end open
This script should do a few things:
1. It creates a pdf file from an .ai file using adobe illustrator.
2. It then runs that pdf file through an automator workflow, which then spits out a pdf into a folder on my desktop.
3. It then moves that pdf file from the desktop, back to the folder of the original .ai file.
Every part of the script works fine except for step 3, it just seems to ignore it entirely. I've tried adding a delay, thinking the script was getting ahead of itself.
I've also tried isolating the move part of the script, using this droplet:
on open thisItem
set this_folder to (the POSIX path of thisItem)
tell application "Finder" to move every file of folder "Macintosh HD:Users:j****.******:Desktop:AUTOMATOR:PDF" to container of this_folder
end open
But this just throws up an error saying that it can't get the «class ctnr» of the file dropped on it (-1728).
Any help is greatly appreciated.
Thanks.
(note: I've starred out the user name part of the filepath for privacy)
EDIT: It seems that it's the Automator part of the script that is the problem, (the ''UltralowPDF"" app). After this runs, nothing after it in the script will run.
The problem is that thisItem is actually theseItems (aka a list). Either you need a repeat loop or – as in the following code – get the first item of the list.
The Finder does not accept (slash separated) POSIX paths. It works only with (colon separated) HFS paths.
The script uses the relative path path to desktop which point always to the desktop of the current user.
on open theseItems
set automatorFolder to (path to desktop as text) & "AUTOMATOR:"
set thisItem to item 1 of theseItems
set export_folder to automatorFolder & "export:"
set pdf_folder to automatorFolder & "PDF:"
tell application "Adobe Illustrator" to open thisItem
tell application "Adobe Illustrator" to save current document in export_folder as pdf with options {class:PDF save options, PDF preset:"Low res proofing"}
tell application "Adobe Illustrator" to close current document
tell application "UltraLowPDF" to open
tell application "Finder" to move every file of folder pdf_folder to container of thisItem
end open