2016-12-20 3 views
3

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

Я написал 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), но получил то же сообщение об ошибке.

+0

Какой класс AppleScript является 'input_file'? Ошибка может быть связана с составом пути назначения. – vadian

+0

@vadian Я думаю, что это просто строка. Он передается из командной строки в виде строки пути с косой чертой. – MattL

+0

Мне интересно, почему расширение файла назначения не упоминается в сообщении об ошибке. В любом случае попробуйте 'set output_file в файл POSIX output_file как текст' – vadian

ответ

2

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

Чтобы обойти эту проблему, вы можете добавить следующие строки в скрипт перед «РАССКАЖИ„Числа“» блок:

open for access file output_file 
close access file output_file 

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

Смежные вопросы