Коллекция имеет счетчик, но не может получить доступ к элементам - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь автоматизировать некоторые вещи MS PowerPoint через AppleScript. Я хотел бы получить (форму) выбор активного окна. Читая словарь, я предположил:

tell application "Microsoft PowerPoint"
    set sel to shape range of selection of active window

    count of sel's shapes -- returns 2 for specific case
    -- class of sel's shapes -- throws a compilation error "object you are trying to access does not exist"
    set i to item 1 of sel's shapes -- i not set but this line does not throw an error
    i -- error: the variable i is not defined
end tell

с комментариями, указывающими, что происходит при запуске определенной строки. Интересно, что у sel's shapes есть счетчик, но я не могу извлечь из него ничего. Моим первым инстинктом было то, что sel's shapes должен иметь какой-то другой тип данных, но class sel's shapes также выдает ошибку, жалуясь, что sel's shapes не существует.

Q: что здесь происходит? Как можно определить (и работать!) count of, а item 1 of и class of нет?

1 Ответ

0 голосов
/ 12 января 2019

Оказывается, это связано с тем, как справочные формы обрабатываются в AppleScript (https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_reference_forms.html#//apple_ref/doc/uid/TP40000983-CH4g-120522).

В этом случае «диапазон формы» не содержит никаких «элементов». Он содержит только «формы»:

set s to shape 1 of shape range of selection of active window

работает просто отлично:

s's left position -- Returns an actual value

Извлеченный урок: старайтесь использовать правильный класс предметов, которые вы пытаетесь получить из коллекции.

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