How To Get Batch Change Back in Photos for Mac

With Apple's release of the Photos app, a number of features relied on by users of both iPhoto and Aperture have been forsaken. One of the most common is iPhoto's "batch change" which allows for changing metadata on multiple items at once. Thanks to AppleScript and helpful user léonie in Apple's discussion forums, a service can be used to restore at least one handy feature.

Services are a way to work across applications, so if you are in one app, and select some text, you can go to the app menu and choose "Services" to see the set of options available for that selected text. You can see what services are already installed on your system by going to System Preferences > Keyboard > Shortcuts > Services. Here is my services menu with some text selected:

Selected text can give you loads of options in Services.

The nifty-er thing about services is that you can add your own, and léonie created one that lets us do those batch changes. First, you can download the service as a zip file. Once it's downloaded, gouble-click to unzip it, and the resulting file will be called BatchChangeDescription.workflow. Double-click that file and you will be prompt to install it as a service.

Once it's installed, you can select multiple items in Photos, go to services, and select this service, which is called Batch Change Description. That will bring up a dialog bog, as shown below. Enter your new description, click submit, and boom! Batch change functionality restored to Photos!

Batch Description Change

Batch Description Change

Here are the contents of that workflow. You don't necessarily need this, but if you are curious what it contains (as you should be with all scripts you install on your computer), or just want to build something like it in Automator yourself, here you go:

on run {input, parameters}
-- batch change the description to the input
tell application "Photos"
set imageSel to (get selection)
if imageSel is {} then
error "Please select some images."
repeat with im in imageSel
tell im
set the description to input
end tell
end repeat
end if
end tell
return input
end run

Remember this service specifically changes the description in batches. You can always copy this service and use it for the basis of a different workflow that will modify a different metadata field.