2017-01-27 14 views
0

Я пытаюсь автоматизировать преобразование файла MS PowerPoint (версия 15.30) 2016 с использованием AppleScript. У меня есть следующий сценарий:Использование Applescript для открытия файла MS Powerpoint 2016

on savePowerPointAsPDF(documentPath, PDFPath) 
    tell application "Microsoft PowerPoint" 
     open alias documentPath 
     tell active presentation 
      delay 1 
      save in PDFPath as save as PDF 
     end tell 
     quit 
    end tell 
end savePowerPointAsPDF 

savePowerPointAsPDF("Macintosh HD:Users:xx:Dropbox:zz yy:file.pptx", "Macintosh HD:Users:xx:Dropbox:zz yy:file.pdf") 

Этот скрипт работает нормально, кроме:

  1. Первый раз, когда я запустить его, я получаю диалоговые окна «Grant Access».
  2. Все время, когда я запускаю его, появляется диалоговое окно, в котором говорится: «Имя файла было перемещено или удалено».

Как только я щелкнул по всем этим диалоговым окнам, он отлично работает. Я попытался использовать имена файлов POSIX, но без успеха. Я не мог получить путь с пробелом в нем, чтобы работать.

Следующие работал с Excel для решения первой проблемы, но не похоже на работу с PowerPoint:

set tFile to (POSIX path of documentPath) as POSIX file 

В общем, я просто пытаюсь использовать AppleScript, чтобы открыть файл PowerPoint с помощью PowerPoint 2016 для Mac. Путь и имя файла могут содержать пробелы, а другие macOS допускают в них не буквенно-цифровые символы.

Любые предложения о том, как я могу решить эти проблемы?

ответ

0

save command of Для получения дополнительных сведений о продукте Powerpoint необходим существующий файл.

Чтобы избежать проблем с открытой команды, преобразовать путь к alias object (команде должна быть за пределами «tell application» блока, как это:

on savePowerPointAsPDF(documentPath, PDFPath) 
    set f to documentPath as alias -- this line must be outside of the 'tell application "Microsoft PowerPoint"' block to avoid issues with the open command 

    tell application "Microsoft PowerPoint" 
     launch 
     open f 
     -- ** create a file to avoid issues with the saving command ** 
     set PDFPath to my createEmptyFile(PDFPath) -- the handler return a file object (this line must be inside of the 'tell application "Microsoft PowerPoint"' block to avoid issues with the saving command) 
     delay 1 
     save active presentation in PDFPath as save as PDF 
     quit 
    end tell 
end savePowerPointAsPDF 

on createEmptyFile(f) 
    do shell script "touch " & quoted form of POSIX path of f -- create file (this command do nothing when the PDF file exists) 
    return (POSIX path of f) as POSIX file 
end createEmptyFile 

savePowerPointAsPDF("Macintosh HD:Users:xx:Dropbox:zz yy:file.pptx", "Macintosh HD:Users:xx:Dropbox:zz yy:file.pdf") 
+0

Это прекрасно работает, за исключением того, у меня был добавить «задержку 1» между операциями «do shell» и «return» в функции createEmptyFile. В противном случае это иногда срабатывало, а иногда и нет. Большое спасибо! – user1092808

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

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