Apple Script запускается более одного раза при открытии файла - PullRequest
0 голосов
/ 09 июля 2019

У меня есть кусок кода, который используется в качестве действия папки и постоянно просматривает папку. Когда новый файл помещается в папку, скрипт запускается и выводит диалоговое окно. Пользователь может открыть или распечатать файл из диалогового окна. Однако, когда я выбираю кнопку открытия, код снова создает диалоговое окно, когда новый файл не был открыт. Это происходит только при открытии файла, а не при его печати. ​​

Кто-нибудь может помочь? Код ниже

on adding folder items to theAttachedFolder after receiving theNewItems
    set filepath to theNewItems as string
    if filepath contains "HA" then
        set theDialogText to "HA is in file name"
        do shell script "afplay '/System/Library/Sounds/Submarine.aiff'"
        display dialog theDialogText buttons {"Dismiss", "Print", "Go to "} default button "Go to order" with icon note

    if result = {button returned:"Go to"} then
        tell application "Finder"
            open file filepath
        end tell
    else if result = {button returned:"Print"} then
        tell application "Shelf Label Printer"
            activate
            print filepath
            quit
        end tell
        display dialog "Printed" with icon note
    end if
if filepath contains "OG" then
    set theDialogText to "OG is in file name"
    do shell script "afplay '/System/Library/Sounds/Submarine.aiff'"
    display dialog theDialogText buttons {"Dismiss", "Print", "Go to"} default button "Go to order" with icon note

    if result = {button returned:"Go to"} then
        tell application "Finder"
            open file filepath
        end tell
    else if result = {button returned:"Print"} then
        tell application "Shelf Label Printer"
            activate
            print filepath
            quit
        end tell
        display dialog "Printed" with icon note

Редактировать: Мохаве работает на данном iMac.

1 Ответ

0 голосов
/ 10 июля 2019

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

on adding folder items to theAttachedFolder after receiving theNewItems
    repeat with thisItem in theNewItems
        set filepath to POSIX path of thisItem as string
        if filepath contains "HA" or filepath contains "OG" then
            set theDialogText to "HA or OG is in file name"
            do shell script "afplay '/System/Library/Sounds/Submarine.aiff'"
            tell application "System Events"
                display dialog theDialogText buttons {"Dismiss", "Print", "Go to"} default button 3 with icon note
            end tell
            if result = {button returned:"Go to"} then
                tell application "System Events"
                    open file filepath
                end tell
            else if result = {button returned:"Print"} then
                tell application "Shelf Label Printer"
                    activate
                    print filepath
                    quit
                end tell
                display dialog "Printed" with icon note
            end if
        end if
    end repeat
end adding folder items to
  • "после получения" всегда дает список псевдонимов, даже если это один элемент, поэтому мы должны пройти через циклсписок вместо того, чтобы пытаться преобразовать его непосредственно в строку.
  • Вы продублировали один и тот же код для файлов 'HA' и 'OG', поэтому я объединил их
  • В вашем диалоговом окне «Дисплей» указана кнопка по умолчанию как«Перейти к заказу», когда ваши кнопки были «Отклонить», «Печать», «Перейти».Это приводило к ошибке (Display Dialog хочет точное совпадение с одной из кнопок).Я заменил его индексом 3.
  • Действия с папками и Finder не всегда хорошо сочетаются друг с другом, поэтому я переключился на приложение System Events для диалогов и процедуры открытия файла.

Теперь это должно работать правильно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...