Как получить доступ к текущей таблице в Numbers?

Как получить доступ к текущей таблице в Numbers с помощью py-appscript?


Для потомков программа, которую я создал, используя эту информацию, очищает все ячейки текущей таблицы и возвращает выделение в ячейку A1. Я превратил его в сервис, используя скрипт запуска оболочки python в Automator, и прикрепил его к Numbers.

 from appscript import *

 Numbers = app('Numbers')
 current_table = None
 for sheet in Numbers.documents.first.sheets():
      for table in sheet.tables():
           if table.selection_range():
                current_table = table

 if current_table:
      for cell in current_table.cells():
           cell.value.set('')

      current_table.selection_range.set(to=current_table.ranges[u'A1'])

Он использовался для очистки больших таблиц чисел, которые я использовал для временных вычислений.


person Chris Redford    schedule 07.11.2009    source источник


Ответы (1)


>>> d = app('Numbers').documents.first()  # reference to current top document

РЕДАКТИРОВАТЬ: кажется, что нет прямой единственной ссылки на текущую таблицу, но похоже, что вы можете найти ее, выполнив поиск текущих листов первого документа для таблицы с ненулевым selection_range, так что что-то вроде этого:

>>> nu = app('Numbers')
>>> for sheet in nu.documents.first.sheets():
...   for table in sheet.tables():
...     if table.selection_range():
...        print table.name()
person Ned Deily    schedule 07.11.2009
comment
Это на самом деле не работает для меня. Он возвращает первую таблицу на листе, а не текущую выбранную таблицу. - person Chris Redford; 07.11.2009
comment
По иронии судьбы, я только сам пришел к такому выводу и собирался опубликовать его :) Однако синтаксис в вашем решении чище. - person Chris Redford; 07.11.2009
comment
Хе. Чудеса приложений Apple Event с поддержкой сценариев: ищите, и вы найдете. И редко есть один очевидный способ сделать это. - person Ned Deily; 07.11.2009
comment
Спасибо за вашу помощь. У меня есть еще один вопрос по appscript, на который, я надеюсь, у вас есть ответ. - person Chris Redford; 08.11.2009