考えられる回避策は、開いているプレゼンテーションをループ チェックし、それを以前に開いたプレゼンテーションと比較することです。
まず、このスクリプトの実行が開始されると、PowerPoint が実行されているかどうかがチェックされます (-> 実行されていない場合は終了します)。PP が実行されると、スクリプトは開いているプレゼンテーションの数を記録します。
次に、スクリプトはループを通過します。この例では、100回繰り返します(私のテストのためですが、永遠に繰り返す必要があります!)。反復ごとに、PP プレゼンテーションのリストを探し、前のリストと比較します: プレゼンテーションが前のリストにない場合、それは新しいものです。
アラートを表示して PowerPoint を終了すると、スクリプトも停止します (ブロック試行)。
tell application "System Events" to set PP_Running to exists (processes where name is "Microsoft PowerPoint")
if not PP_Running then return -- Power point is not launched !
tell application "Microsoft PowerPoint" to set Old_list to name of every presentation -- get initial list of open presentations
repeat with I from 1 to 100 -- for test, but it should be repeat with no limit
try
tell application "Microsoft PowerPoint" to set New_list to name of every presentation
on error
display alert "PowerPoint no longer launched"
return -- quit the loop
end try
repeat with aDoc in New_list
if not (Old_list contains aDoc) then -- new document has been opened !!
set Old_list to New_list
log "Open new document = " & aDoc -- do what ever you need to do !!
end if
end repeat
delay 0.5
set I to I + 1
end repeat
El Capitain / PP 2011 でテスト済み: PP 2011 から PP 2016 まで、「すべてのプレゼンテーションの名前」に変更はないと思います。