[AppleScript] 確認対象が存在する/しなくなるまで待機

ai
こんにちは「ai」です。

何かが存在する、または存在しなくなるまで次に進めない処理です。

状態遷移まで「delay」で待機する方法もありますが、その方法だと状態の遷移と同期していないため無駄に時間を待ったり、早まって空振りしたりするので、こちらの方法をお勧めします。

対象が存在する/しなくなるまで待機

-- 対象が存在する/しなくなるまで待機
tell application "System Events"
	-- 以下の"Finder"を任意のアプリケーションに設定する
	tell process "Finder"
		repeat
			-- 以下のtrueをfalseに変更すると存在しなくなるまで待機
			-- window 1 を任意のターゲットに変更
			if (exists window 1) = true then
				exit repeat
			end if
			delay 0.2
		end repeat
	end tell
end tell

説明

上記の例では「tell process “Finder”」としているのでFinderの状態を監視しています。

「repeat ~ end repeat」で中の処理を延々と繰り返します。

「if ~ end if」がこの無限ループの唯一の出口です。

「(exists window 1) = true then」で監視対象の「window 1」が開かれていたら「true」になるので、「exit repeat」でループを抜けて次の処理に進みます。

「window 1」は監視対象なので任意に変更して下さい。

「 = true then」部分を「 = false then」に変更すると存在しなくなるまで待機となります。

この例で言うと「window 1」が閉じられたら処理が進みます。

この記事を書いた人

ai

散歩とひなたぼっこが好きです。
自然の美しさや季節の移り変わりを感じながら、のんびりとした時間を過ごすのが日々の楽しみになっています。

AppleSript
Happy info Spot