我有一个简短的子程序如下:
on show_Dialog(msg)
tell application "Script Debugger Demo"
display dialog msg
end tell
end show_Dialog
如果我从脚本中调用它而没有拥有它的tell语句,例如:
show_Dialog("well this works")
没有问题。如果我从一个调用另一个应用程序的代码块中调用它,我得到一个(未指定的)错误(-1708),例如:
tell application Mail
show_Dialog("this will not work for sure")
end tell
然而,在脚本块中,我可以在tell应用程序“Mail”代码块中放置一个tell application“Excel”命令。
如何拥有一个通用对话框子程序,它始终会在特定应用程序中生成对话框?问题是我将我的应用程序分配到不同的空间,当它从脚本调试器跳转时很痛苦。有许多(OS X Spaces和/或Script Debugger)解决方法,但我想知道为什么这个代码失败以及如何正确执行它。
编辑 - >即使我从子程序中删除'tell application ...'和'end tell'行,我也会收到错误。
答案 0 :(得分:4)
发生错误是因为您当前的目标是应用程序邮件。这意味着一切都针对邮件。 Mail不知道处理程序show_Dialog()并返回错误。要将目标设置回当前脚本,您可以在处理程序调用前添加单词 my ,将 of my 添加到处理程序调用的末尾或者包装一个tell阻止处理程序调用。
tell application "Mail"
my show_Dialog("this will work for sure")
end tell
或
tell application "Mail"
show_Dialog("this will work for sure") of me
end tell
或
tell application "Mail"
tell me
show_Dialog("this will work for sure")
end tell
end tell