Why is there this redundancy and is there a way to get rid of it?

I found this script here -


on do_submenu(app_name, menu_name, menu_item, submenu_item)
		-- bring the target application to the front
		tell application app_name
		end tell
		tell application "System Events"
			tell process app_name
				tell menu bar 1
					tell menu bar item menu_name
						tell menu menu_name
							tell menu item menu_item
								tell menu menu_item
									click menu item submenu_item
								end tell
							end tell
						end tell
					end tell
				end tell
			end tell
		end tell
		return true
	on error error_message
		return false
	end try
end do_submenu

From this, I made this:

set app_name to "iTunes"
set menu_name to "View"
set menu_item to "View As"
set submenu_item to "Songs"

tell application "System Events"

	click menu item submenu_item of menu menu_item of menu item menu_item of menu menu_name of menu bar item menu_name of menu bar 1 of application process app_name of application "System Events"
end tell

It works great for my needs, but I’m wondering why do menu items and menu names have to be repeated? Seems redundant. I must be doing something wrong.

There is no difference, only in syntax. The code that eventually is compiled (OSA code) is the same.

Menu items can contain new sub menus. It’s not repeated it’s just how menus work where the main menu (the application’s top level menu) is addressed with menu bar. Notice the difference between menu (not menu names) and menu item.