On macOS 10.12.4 Sierra we do no longer need the work-around with the top level album.
This version of the script is using the current selection, but has a few added error tests:
-- Select the photo in Photos, then run this script by pressing the "Run" button in the script editor or from the scripts menu.
tell application "Photos"
activate
-- Add the photo you want to search for to a top level album as the first item in the album
set resultcaption to "Searching for: "
try
set sel to selection
if sel is {} then error "The selection is empty" -- no selection
on error errTexttwonumbererrNumtwo
display dialog "No photos selected " & errNumtwo & return & errTexttwo
return
end try
set imagename to "unknown filename"
try
set targettoitem 1 of sel-- the image to seach for
tell target
set imagename to the filename of target
end tell
on error errTexttwonumbererrNumtwo
display dialog "Cannot get the filename of the first image: " & errNumtwo & return & errTexttwo
end try
set resultcaption to (resultcaption & imagename)
end tell
try
display alertresultcaptionbuttons {"Cancel", "OK"} asinformationalgiving up after 2
on error errTextnumbererrNum
if (errNum is equal to -128) then
-- User cancelled.
return
end if
end try
-- From Jacques Rioux's script:
tell application "Photos"
-- set sel to selection
if sel is {} then return -- no selection
try
set thisId to id of item 1 of sel
on error errTextnumbererrNum
display dialog "Error: cannot get the image ID" & errNum & return & errText & "Trying again"
try
delay 2
set thisId to id of item 1 of sel
on error errTexttwonumbererrNumtwo
display dialog "Skipping image due to repeated error: " & errNumtwo & return & errTexttwo
error "giving up"
return
end try --second attempt
end try
set theseNames to {}
try
set theseNames to name of (albums whose id of media items contains thisId)
on error errTextnumbererrNum
display dialog "Error: cannot get the albums" & errNum & return & errText & "Trying again"
try
delay 2
set theseNames to name of (albums whose id of media items contains thisId)
on error errTexttwonumbererrNumtwo
display dialog "Skipping image due to repeated error: " & errNumtwo & return & errTexttwo
error "giving up"
return
end try
end try
end tell
if theseNames is not {} then
set {oTid, text item delimiters} to {text item delimiters, return}
set {t, text item delimiters} to {theseNames as string, oTid}
-- return oTid
else
set t to "No album"
end if
activate
set resultcaption to resultcaption & ", found it in these albums:
" & t as string
set the clipboard toresultcaption
display dialogresultcaptionbuttons {"OK"} default button "OK" -- you can press the Enter key or the return Key to close the dialog
returnresultcaption-- léonie