Как автоматизировать перемещение файлов между OneDrive и Applications.com.Excel - PullRequest
0 голосов
/ 07 июля 2019

Я кодировал базу данных в Excel, недавно должен был поддерживать Mac, Office 2016 и далее, действительно не поддерживает встроенный код, поэтому мне пришлось позаимствовать Mac.

Я хочу создать «патч» .app, который при запуске на компьютере конечного пользователя помещает AppleScripts в файл, который, по словам Microsoft, должен быть.

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

Я пробовал несколько различных структур кода, я пользователь Windows, поэтому я занимаюсь изучением операционной системы.

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

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

Проверяет, существуют ли папки, а если нет, то создает их.

Затем предполагается переместить все файлы в источнике в место назначения.

set Source to POSIX path of ((path to me as text) & "::") & "AppleScripts/"
set ParentDestination to ("/Library/Application Scripts/")
set Destination to ("/Library/Application Scripts/com.microsoft.Excel/")
set ParentFound to false
set DestinationFound to false

tell application "System Events"
    if exists folder ParentDestination then 
        set ParentFound to true 
        if exists folder Destination then       
            set DestinationFound to true        
        end if  
    end if
end tell

tell application "Finder"
    if ParentFound = false then 
        make new folder at folder "Library" of startup disk with properties {name:"Application Scripts"}    
    end if
    if DestinationFound = false then    
        make new folder at folder "Application Scripts" of folder "Library" of startup disk with properties {name:"com.microsoft.Excel"}    
    end if
    duplicate (every item in Source) to Destination
end tell

Текущая ошибка, которую я имею: Finder got an error: Handler can’t handle objects of this class.

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

Я знаю, что это, вероятно, простая вещь, но я даже не успел заставить Excel вызывать код, поэтому мне нужна помощь.

1 Ответ

0 голосов
/ 08 июля 2019

Средство поиска касается файловых спецификаторов;Вот почему я всегда предпочитаю использовать системные события.Но в системных событиях нет функциональной команды «дубликата», поэтому ... Для локальных копий должно работать следующее (во всяком случае, на моей машине):

set Source to POSIX path of ((path to me as text) & "::") & "AppleScripts/"
set libraryFolder to "~/Library"

tell application "System Events"
    if exists folder "Application Scripts" of folder libraryFolder then
        set AppScriptsFolder to folder "Application Scripts" of folder libraryFolder
    else
        set AppScriptsFolder to make new folder at folder libraryFolder with properties {name:"Application Scripts"}
    end if
    if exists folder "com.microsoft.Excel" of AppScriptsFolder then
        set targetFolder to folder "com.microsoft.Excel" of AppScriptsFolder
    else
        set targetFolder to make new folder at AppScriptsFolder with properties {name:"com.microsoft.Excel"}
    end if
    set targetFolder to (path of targetFolder) as alias
    set Source to (path of folder Source) as alias
end tell

tell application "Finder"
    duplicate (every item in Source) to targetFolder
end tell

Я искренне сомневаюсь в васможно запустить AppleScript из облачного каталога.Я имею в виду, я никогда не пытался сам, и у меня нет доступа к OneDrive, чтобы проверить его, но возможность запуска произвольного кода с удаленного диска кажется кошмаром безопасности.Мне было бы интересно узнать, сможете ли вы справиться с этим.

...