まえがき
もろもろの理由で常にPC動作する必要があったため、作成
仕様
AppleScriptなのでMAC用、PowerShellで書けば別にWindowsでもできそう。
13秒ごとに上下方向ランダムスクロール。スクロール数も上下ランダム
停止操作を行うまで無限ループ
ディレイ外すと当然PC操作受け付けなくなるため注意
ChatGPTにコーディングしてもらったAppleScript
repeat
set randomNum to (random number from 1 to 13) -- 1から13までランダムに数字をセット。スクロール数をランダムにしている
set randomDirection to (random number from 1 to 2) -- 上方向にスクロールするか下方向にスクロールするかランダムにセット
tell application "System Events" -- スクロールに必要なシステム操作の呼び出し
if randomDirection is 1 then -- もしランダム変数が1だったら
repeat randomNum times -- スクロールの数だけ下矢印キーを押下する
key code 125 -- 下矢印キー
delay 0.2
end repeat
else -- それ以外だったら
repeat randomNum times -- スクロールの数だけ上矢印キーを押下する
key code 126 -- 上矢印キー
delay 0.2
end repeat
end if
end tell
delay 13
end repeat
あとがき
実際はこんなにコメントは出てこないが読みながら付け足した。
6往復ぐらいChatGPTと会話して「上下ランダムに」「ディレイが必要」とか言ってたらこれが出てきた。
コーディング時間は1時間未満。AppleScriptでシステム操作させるプログラムとか作ったことないので普通に自分でコーディングしたらおそらく3時間ぐらいかかるだろう。
これ以上の規模感のプログラムだとChatGPTでコーディングさせるのは逆にめんどそうだなと感じたが、この規模感なら便利だなぁと思った。
2024/07/01追記
放置していると定期的にハングアップする事象が発生。
結構再現性あり。
どうやらAppleScriptには例外処理が使えるっぽいので本来の例外処理の使い方ではないが
エラーになっても動いていている必要がある今回のプログラムの趣旨には必要なため修正。
repeat
set randomNum to (random number from 1 to 13) -- 1から13までランダムに数字をセット。スクロール数をランダムにしている
set randomDirection to (random number from 1 to 2) -- 上方向にスクロールするか下方向にスクロールするかランダムにセット
tell application "System Events" -- スクロールに必要なシステム操作の呼び出し
if randomDirection is 1 then -- もしランダム変数が1だったら
repeat randomNum times -- スクロールの数だけ下矢印キーを押下する
+ try
key code 125 -- 下矢印キー
+ on error
+ key code 125 -- 下矢印キー
+ end try
delay 0.2
end repeat
else -- それ以外だったら
repeat randomNum times -- スクロールの数だけ上矢印キーを押下する
+ try
key code 126 -- 上矢印キー
+ on error
+ key code 126 -- 上矢印キー
+ end try
delay 0.2
end repeat
end if
end tell
delay 13
end repeat
2024/07/09追記2
例外処理で強引にエラー突破していたが、超稀にエラーが発生する事象を確認
発生したエラーは以下
error "System Eventsでエラーが起きました: アプリケーションは実行されていません。" number -600
ループ内にSystem Eventsが実行されているか確認し、実行されていなければ起動する処理を追加
一旦これで様子見する
repeat
+ -- System Eventsが実行されていることを確認し、起動していない場合は起動する
+ tell application "System Events"
+ if not (exists process "System Events") then
+ launch
+ end if
+ end tell
-- ランダムなスクロール数と方向を決定
set randomNum to (random number from 1 to 13) -- 1から13までランダムに数字をセット。スクロール数をランダムにしている
set randomDirection to (random number from 1 to 2) -- 上方向にスクロールするか下方向にスクロールするかランダムにセット
-- System Eventsを使って矢印キーを押下
tell application "System Events"
if randomDirection is 1 then -- もしランダム変数が1だったら
repeat randomNum times -- スクロールの数だけ下矢印キーを押下する
try
key code 125 -- 下矢印キー
on error
key code 125 -- 下矢印キー
end try
delay 0.2
end repeat
else -- それ以外だったら
repeat randomNum times -- スクロールの数だけ上矢印キーを押下する
try
key code 126 -- 上矢印キー
on error
key code 126 -- 上矢印キー
end try
delay 0.2
end repeat
end if
end tell
-- 13秒待機
delay 13
end repeat