2016-05-12 3 views
0

Я столкнулся с проблемой «Предоставить доступ» в Office 2016, где мне нужно вручную нажать «Предоставить доступ», если я открываю новый файл с помощью Automator. Я нашел этот ответ о том, как получить вокруг него (с помощью объекта файла или объекта псевдонима вместо строки):AppleScript/Automator Folder Действие для преобразования Excel в CSV

tell application "Microsoft Excel" 
activate 
open file "Macintosh HD:Users:path:to:file" 
end tell 

Но поскольку я использую действие папки Automator, я не уверен, как чтобы получить путь к файлу там, где он должен быть. Большинство примеров, которые я нашел, имеют использование AppleScript choose folder with prompt, но поскольку все это должно быть полностью автоматизировано, это не сработает.

Идея такова:

  1. файл Excel получает загружены в "ForSQL" папку
  2. действие Папка запрашивает файл XLS, чтобы конвертировать в CSV
  3. CSV затем открывается в TextWrangle, чтобы убедиться, что он остается в UTF- 8
  4. Затем перемещает его в официальный «SQL» папку
  5. закрывает все приложения, он был открыт и удаляет все, что он переехал из папки «ForSQL»

Но я открыт для лучших предложений, которые достигают того же конечного результата.

Это мой рабочий процесс Automator до сих пор - но похоже, что мне нужно заменить шаг «Преобразовать формат файлов Excel» с помощью AppleScript, чтобы получить всплывающее сообщение «Grant Access». Это действие папка, которая начинается, когда что-то попадает в «ForSQL» папку:

AutomatorWorkflow

ответ

0

Я не уверен, чтобы понять, что вы хотите сделать с textWrangle, но ниже скрипт делает все шаги до и после того, как только используя Applescript (нет необходимости для действий Automator):

--this choose file must be replaced by your "input" of automator folder items 
set Fxl to choose file --the Excel file to be processed 


-- define here your destination SQL folder 
-- for my tests, I used a folder mySQL on my Desktop 
set SQLFolder to ((path to desktop folder) as string) & "mySQL" 

tell application "Finder" to set ForSQL to (container of Fxl) as string 

--define new name by replacing current extension (xls, xlsx, xlsm, xml) by "csv" 
tell application "Finder" 
set N to name of Fxl 
set NbExt to length of ((name extension of Fxl) as string) 
set newname to (text 1 thru -(NbExt + 1) of N) & "csv" 
end tell 

--convert to CSV and close 
tell application "Microsoft Excel" 
open Fxl 
tell workbook 1 
    tell sheet 1 to save in (ForSQL & newname) as CSV file format 
    close without saving 
end tell 
end tell 

-- add eventually your TextWrangle step here (?) 

-- delete source file and move csv to proper folder 
tell application "Finder" 
delete Fxl 
move file (ForSQL & newname) to folder SQLFolder 
end tell 

на практике вы можете запустить все это в полном действии AppleScript папки. Заменить «set Fxl to choose ...» на «при добавлении элементов папок ...». В этом случае вы должны вставить сценарий выше в цикл повтора для обработки всех папок файлов в папке.

Однако у вас могут возникнуть проблемы с использованием скрипта действий папки, поскольку система будет запускать ваш скрипт еще раз при создании нового файла CSV (опять же в той же папке!).

Работа, о которой я предлагаю, заключается в использовании скрипта действий папки, чтобы получить файл, сброшенный в ForSQL, переместить его на другой «temp_ForSQL» и запустить этот скрипт с использованием перемещенного файла. Таким образом, cvs будет добавлен в temp_forSLQ без запуска нового скрипта действия папки.

Я надеюсь, что это достаточно ясно ... если нет, просто дайте мне знать.

+0

Большое вам спасибо! Пытаемся следовать и проверить. Должен ли я больше не использовать действие с папкой автомата - если нет, я должен просто добавить 'при добавлении элементов папок ', когда все попадет в папку« Мои файлы »? Кроме того, поскольку мы создаем CSV в той же папке, все равно, чтобы переместить файл в папку SQL перед конверсией, чтобы этого не произошло? Наконец, мне еще не удалось это сделать, но главной проблемой сценария Automator было то, что страница «Грант-доступ» из Excel 2016 для Mac появилась, что заставило все это сломаться. Это тоже с этим кодом? – Ryan

+0

Также часть TextWrangler заключалась в том, чтобы убедиться, что файл остался в UTF-8, потому что я заметил, что некоторые из них по какой-то причине менялись на ОС Roman. Но если это может произойти в Excel, то мне не понадобится этот шаг - просто не мог понять это каким-либо другим способом. – Ryan

+0

Играли с этим, и я продолжаю получать сообщение об ошибке «Ошибка» Microsoft Excel получил сообщение об ошибке: Ошибка параметра. «Номер -50», когда код попадает в строку 'save in (sql & newname) в формате CSV. По-видимому, это несколько известный вопрос? http://www.mac-help.com/threads/automator-wont-convert-to-csv.221267/ Сценарий My Automator работал в целом, он просто заставлял меня Grant Access вручную сначала, что разрушало автоматизацию. – Ryan

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

  • Нет связанных вопросов^_^