У 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
Это говорит сценарию открыть файл для доступа на запись, и поскольку его нужно открыть только для получения необходимых разрешений, он затем закрывает его.