У Applescript нет прав на сохранение файла

Я пытаюсь написать скрипт, который будет конвертировать .numbers документы для .csv документы. Он должен быть исполняемым из командной строки, чтобы я мог использовать его в git-хуке перед фиксацией.

Я написал AppleScript, чтобы взять путь к файлу чисел и экспортировать его как CSV, но фактический экспорт не будет работать, потому что "У вас нет разрешения. (6)". Я думаю, что это связано с песочницей, но я не могу использовать AppleScript для вызова средства выбора файлов, потому что это должно быть полностью автоматизировано.

Как я могу дать свои разрешения AppleScript для экспорта в этот файл?

on run argv
    set input_file to item 1 of argv

    set output_file to input_file
    --strip off the .numbers extention
    set delims to AppleScript's text item delimiters
    set AppleScript's text item delimiters to "."
    if output_file contains "." then set output_file to (text items 1 thru -2 of output_file) as text
    -- set the extension to be csv
    set output_file to output_file & ".csv"
    set output_file to POSIX file output_file

    tell application "Numbers"
        activate
        tell (open input_file)
            set activeDocument to it
                with timeout of 3 seconds
                    export activeDocument as CSV to output_file
                end timeout
            close activeDocument saving yes
        end tell
    end tell
end run

Полное сообщение об ошибке export_numbers_to_csv.scpt:604:676: execution error: Numbers got an error: The document “DisplayPlusButtonTestScripts.numbers” could not be exported as “DisplayPlusButtonTestScripts”. You don’t have permission. (6)

Мой вызов osascript export_numbers_to_csv.scpt /Users/me/Test\ Scripts/MyTests.numbers из рабочего каталога /Users/me/,

У меня есть разрешения на запись в каталог, в который я прошу скрипт написать. Я также пытался экспортировать во временный каталог (через path to temporary items from user domain) но получил то же сообщение об ошибке.

1 ответ

Решение

Разрешения могут стать беспорядочными, если файл.csv уже существует в том же каталоге и с тем же именем, что и файл, в который вы пытаетесь экспортировать. Если вы создали этот файл.csv или, по крайней мере, отредактировали / открыли его в какой-то момент, у вас будет разрешение на экспорт под этим именем, но если он никогда ранее не был открыт для доступа на запись на вашем компьютере (например, если вы его загрузили)), тогда необходимых разрешений там не будет.

Чтобы обойти это, вы можете добавить следующие строки в свой сценарий перед блоком "сказать приложению" Числа "":

open for access file output_file
close access file output_file

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

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