Applescript необъяснимо дает сбой в Big Sur

Я использовал TextExpander для запуска этого скрипта, и недавно он начал давать сбой после обновления до Big Sur. Думая, что это связано с TextExpander, я создал аналогичный ярлык для его запуска в BetterTouchTool, но у меня та же проблема. Он не выдает видимую ошибку, он просто воспроизводит тональный сигнал ошибки, когда завершает работу, и ничего не выводит. Странно то, что когда я запускаю его из редактора сценариев, он работает просто отлично. Только когда он вызывается из другого процесса, он терпит неудачу.

Основная идея сценария состоит в том, чтобы вводить необработанные числа в диалоговое окно и выводить отформатированный временной код в самом переднем приложении. Например, при вводе «207» выводится «01:00:02:07».

Я просмотрел код и не могу найти, что могло бы вызвать ошибку, поскольку все это очень простые манипуляции с текстом. Любые мысли будут очень полезны.

      tell application "System Events"
--Set process that called text expander aside so it can be returned to the front
set frontProcessName to name of item 1 of (processes whose frontmost is true)

-- Get the raw numbers from the user
set raw_timecode to text returned of (display dialog "Timecode" default answer "")

-- Set the default variables
set user_timecode to "" as string
set rt_length to the length of raw_timecode

--Check to see if the TC field is blank
if raw_timecode = "" then
    set raw_timecode to "01000000"
end if

--Parse the user supplied numbers and replace any "." with "00"
repeat with n from 1 to rt_length
    if character n of raw_timecode = "." then
        set user_timecode to user_timecode & "00" as text
    else
        set user_timecode to user_timecode & character n of raw_timecode as text
    end if
    
end repeat

--Set to 00:00:00:00 if only digit is 0 
if user_timecode = "0" then
    set base_timecode to "00000000"
else
    set base_timecode to "01000000"
end if

set x to the length of user_timecode


-- Trim extra digits off base timecode
if x = 8 and user_timecode ≠ "0" then
    set raw_timecode to user_timecode as string
else
    repeat while (length of base_timecode) + (length of user_timecode) > 8
        try
            set base_timecode to characters 1 thru -(x + 1) of base_timecode as string
            set raw_timecode to base_timecode & user_timecode as string
        on error
            display dialog "Invalid timecode"
            error number -128
        end try
    end repeat
end if
set new_timecode to characters 1 thru 2 of raw_timecode & ":" & characters 3 thru 4 of raw_timecode & ":" & characters 5 thru 6 of raw_timecode & ":" & characters 7 thru 8 of raw_timecode as text

end tell

-- Return the previous app that called text expander to the front
tell application frontProcessName to activate
delay 0.5

return new_timecode

0 ответов

Другие вопросы по тегам