Я начал обновлять надстройку для Word для Mac 2016, и, что неудивительно, все идет не так хорошо. Может ли кто-нибудь помочь в том, что может быть неправильно с этим applescript (или мой метод его вызова)? Я хорошо разбираюсь в VBA, но очень новичок в Applescript. Это должно искать файл или файлы и возвращать строку имен файлов с разделителями-запятыми. Я могу сказать, что сам Applescript работает как ожидалось (уведомление появляется и дает правильное значение). Но значение, похоже, не делает его для VBA, который, кажется, получает пустую строку (хотя трудно сказать, учитывая ограничения VBE в Word 2016 для Mac).Возвращение значения с помощью Applescripttask (Word для Mac 2016)
VBA (упрощены для краткости):
#If MAC_OFFICE_VERSION >= 15 Then
Dim args As String, MyFiles As String
'These variables have been set elsewhere and I can confirm with Debug.Print that they are as expected.
args = MyBrowseTypes & ";" & browseMulti & ";" & browsePath
MyFiles = Applescripttask("scrHelperAS.scpt", "browseFiles", args)
' This prints true, for what that's worth
If MyFiles = "" Then
Debug.Print "True"
Else: Debug.Print "False"
End If
#End If
Applescript (это в файле с именем, как было отмечено выше, помещенного в правильном месте):
on browseFiles(argString)
--open file browser and return selection
set {sFileType, bMultiples, sDefPath} to SplitString(argString, ";")
set sFileTypes to SplitString(sFileType, ",")
if bMultiples is "true" then
set thePrompt to "Please select a file or files"
else
set thePrompt to "Please select a file"
end if
set AppleScript's text item delimiters to ","
set theFiles to (choose file of type sFileTypes with prompt thePrompt multiple selections allowed bMultiples default location alias POSIX file (sDefPath)) as string
' I don't know if this is/should be necessary, added to try to fully coerce the return value to a string. Didn't work without it, still doesn't work with it.
set theFilesStr to joinList(theFiles, ",")
set AppleScript's text item delimiters to ""
display notification theFilesStr with title "Files"
return theFilesStr
end browseFiles
я сделал небольшие изменения к уведомлению, чтобы гарантировать, что это не какая-то проблема кеширования с Applescript. Браузер файлов в основном работает (иногда он застревает и не позволяет делать выбор, но это, по-видимому, отдельная проблема). Я попытался использовать «сообщить приложение» «Системные события», чтобы вернуться », как я увидел на Ron DeBruin's very helpful site, но это не меняло. Я также попробовал называть очень, очень простой« Hello world »стиль Applescript, чтобы убедиться, что я способен возвращение вообще ничего, и что работал (вероятно, не полезно, но здесь это.):
on simple(sometext)
set myText to "Yo"
display notification myText with title "Hello"
return myText
end simple
Это только первый шаг в большом процессе, и теперь я немного волновалась Надеюсь, кто-то может указать из-за какой-то немой ошибки, чтобы я мог двигаться дальше.
(Просто для небольшого контекста, я делаю большую часть моей разработки надстройки в Word 2010, но работает в Word 2011. Итак, у меня много вызовов MacScript, которые я пытаюсь обновить для Word 2016.)
Спасибо! Я понятия не имел, что MacScript по-прежнему подходит для решения некоторых задач. – Christina