Advertisement
  1. Computer Skills
  2. Automation

Сгенерировать список открытых вкладок Safari с помощью AppleScript

Scroll to top
Read Time: 13 min

() translation by (you can also view the original English article)

Если вы блоггер работает над раундап или студент, делая некоторые исследования, вы, вероятно, столкнуться с необходимостью создать список сайтов, на основе текущих открытых вкладок Safari. Давайте узнаем, как написать сценарий applescript, который будет обрабатывать этот процесс для нас.

textedittextedittextedit
Пример того, что скрипт должен вывести на основе открытых вкладок в Safari.

Что мы будем изучать

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

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

Здесь важно, чтобы узнать от того, как мы подойдем к этой задаче.

Мы собираемся нажмите на количество помощью applescript конструкции, которые имеют решающее значение в вашем путешествии, чтобы стать автоматизация про: переменные, "повторить" циклы, работа со строками, экранирование символов и многое другое.


Шаг 1. Создать алгоритм

Первое, что нужно сделать при работе с любым проектом программирования-это посмотреть, если вы можете набросать алгоритм. Это слово звучит довольно пугающе, но на самом деле это просто причудливый способ сказать, что мы должны проработать шаги, что мы собираемся делать

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

Для создания алгоритма для нашего проекта, мы должны иметь базовое понимание двух вещей: наша конечная цель и шаги, необходимые, чтобы добраться до него. Последняя часть является немного сложнее, поскольку она требует определенных знаний о том, как подойти к проблеме с точки зрения программирования, которые могут или не могут быть интуитивно в зависимости от того, как работает ваш мозг.

Цель

Давайте сначала проанализируем наша цель, чего мы хотим достичь? В итоге, что я хочу стрелять в документ textedit, и которое содержит список открытых вкладок в Safari. В каждом разделе должен быть отформатирован как HTML-ссылку с заголовком вкладки задается Текст ссылки, как это:

1
2
<a href="www.siteurl.com">Tab Title Here</a>

Процесс

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

  1. Подсчет количества Сафари для Windows
  2. Подсчитать количество вкладок в каждом окне
  3. Создать цикл, который проходит через каждую вкладку из каждого окна
  4. Возьмите имя текущей вкладки
  5. Захватите URL текущей вкладки
  6. Вкладка название магазина, URL-адреса и другие нужные текст в переменную
  7. Откройте Textedit,
  8. Создать новый документ
  9. Набор текста на новый документ в переменную, которая содержит нашу строку информации

Шаг 2. Создать Сафари рассказать блока

Теперь, когда у нас есть базовая структура шагов, что нам потребуется, это время, чтобы перейти в кодирование. Первые несколько шагов в нашем алгоритме все пришлось делать с Сафари, поэтому первое, что нужно сделать в нашем скрипте создать рассказать блока для Сафари.

[рабочей группы]
сказать приложение "Сафари"
конец сказать
[/помощью applescript]

Расскажите блоки, как мы, кто/что это такое, что мы говорим в нашем скрипте, в данном случае это приложение Safari.

Совет: не забывайте закрывать свои рассказать блоков "сообщит", ваш скрипт будет выдавать ошибку без этого.


Шаг 3. Создание Исходных Переменных

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

На данный момент, я знаю, что мне нужно настроить три различные переменные: одну для подсчета окна, по одному на вкладке графа, и один за полученный текстовый документ.

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

[рабочей группы]
сказать приложение "Сафари"

--Переменные
набор windowCount на количество окон
набор docText к ""

конец сказать
[/помощью applescript]

Установка счетчика окно

После комментария, в первой строке кода создается переменная с именем "windowCount". Обратите внимание, что это очень описательный, а не что-то родовое, как "переменная". Всегда пытаются назвать ваши переменные что-то полезное, так что читабельность сценария остается высокой.

Помощью applescript команды часто очень близко к простом английском языке, что делает ее очень простой язык для начинающих быстро.

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

Переменная docText

Странная часть о приведенном выше коде заключается в том, что я создал пустую строковую переменную, зачем я это делаю? Причиной станет более ясным позже, но в основном наши повторить пойдет до конца и что-то добавить к этому каждый раз, и мы просто нуждались в месте, чтобы начать. Вы не можете что-то добавить к переменной, которая не существует!


Шаг 4. Первый Повтор Блока

Чтобы снять наша цель, нам понадобится два повторить блоков. Логика это проще, чтобы обернуть свой ум вокруг, если вы работаете изнутри.

Логика это проще, чтобы обернуть свой ум вокруг, если вы работаете изнутри.

Наша цель-захватить заголовок и URL-адрес на вкладке, затем повторить, что для каждой вкладки (повтор блока). Хотя фишка в том, что там может быть больше чем одно открытое окно, так что мы должны повторить этот процесс для каждого окна (повтор блока).

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

[рабочей группы]
сказать приложение "Сафари"

--Переменные
набор windowCount на количество окон
набор docText к ""

- Повторить для каждого окна
повторите с X от 1 до windowCount
набор tabCount чтобы количество вкладок в окне х
конца повторять
конец сказать
[/помощью applescript]

Повторять С

Простой повтор блока может сказать что-то вроде "повторить 5 раз", но мы сделали что-то немного сложнее, здесь. "Повтор с" конструкции позволяет создать намеренно обобщенная переменная (x), которая будет увеличиваться каждый раз повторять блок запуска.

Для этого, чтобы работать, мы должны рассказать нашим скриптом запуска и остановки точки x как его цикла итераций. Что я сделал-это сказал applescript для начала х по 1, затем увеличьте его, пока не достигнет значения, равного количеству открытых окон, как выражается переменная, которую мы ставили перед.

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

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

Считая вкладок

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

Чтобы это провернуть, мне пришлось вытащить в переменную x. Помните, что эта переменная будет увеличиваться каждый раз повторять блок запуска. Так, на первое время, мы будем считать количество вкладок в окне один, второй раз, мы будем считать количество вкладок в два окна и т. д.


Шаг 5. Второй Блок

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

Пока мы здесь, мы также установить некоторые переменные для следующего шага.

[рабочей группы]
сказать приложение "Сафари"

--Переменные
набор windowCount на количество окон
набор docText к ""

- Повторить для каждого окна
повторите с X от 1 до windowCount
набор tabCount чтобы количество вкладок в окне х

- Повторить для каждой вкладки в текущем окне
повторите с Y от 1 до tabCount
--Вам вкладку имя и URL-адрес
набор tabName на название вкладки у окна х
набор tabURL к URL-адрес вкладки у окна х
конца повторять

конца повторять
конец сказать
[/помощью applescript]

Повторите для каждой вкладки в текущем окне

Как вы можете видеть, это повторить блок использует синтаксис, похожий на синтаксис, что мы видели раньше. Мы уже посчитали количество вкладок в предыдущем шаге мы выбрали повторите блок от 1 до tabCount, с использованием универсального приращение переменной Y.

Возьмите вкладку имя и URL-адрес

Чтобы закончить этот шаг, мы инициировали двумя переменными. Синтаксис этих почти идентичных, только один берет название текущей вкладки, а другой захватывает URL. Я нашел специальный синтаксис для этих команд в Сафари словаре applescript.

Обратите внимание, что, чтобы захватить имя и URL-адрес в текущей вкладке, мы просто с помощью X и Y переменных, приращение каждый раз повторять блок запуска. Итак, первый раз мы берем имя и URL-адрес вкладки одного окна один, а затем два окна одно, тогда, возможно, закладка одного из двух окон, и т. д.


Шаг 6. Заполнить строку docText 

Помните, что пустые docText переменной, которую мы создали раньше? Теперь мы собираемся заполнить его с текстом, что мы хотим, для каждая запись в наш список. Каждый раз повторять блок работает, заголовок и URL-адрес текущей вкладки будут добавлены к переменной, используя HTML-форматирование, которые мы изложили выше.

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

[рабочей группы]
сказать приложение "Сафари"

--Переменные
набор windowCount на количество окон
набор docText к ""

- Повторить для каждого окна
повторите с X от 1 до windowCount
набор tabCount чтобы количество вкладок в окне х

- Повторить для каждой вкладки в текущем окне
повторите с Y от 1 до tabCount

--Вам вкладку имя и URL-адрес
набор tabName на название вкладки у окна х
набор tabURL к URL-адрес вкладки у окна х

набор docText в docText &
"<а href=" & "\"" &
tabURL & "\">" &
tabName &
"" &
перевод строки как строки
конца повторять

конца повторять
конец сказать
[/помощью applescript]

Конкатенация

Первое, что вы должны знать здесь, что конкатенация (положить вещи вместе) в applescript осуществляется через амперсанд. В приведенном выше примере, я хочу добавить кучу разных вещей в переменную каждый раз, поэтому я использую амперсанд, чтобы соединить все части вместе.

Добавление к переменной

Обратите внимание, что я поставил docText переменной "docText &..." кучу других вещей. Почему бы мне задать переменную к себе? Что это говорит помощью applescript, что я хочу установить docText переменной, чтобы все данные, хранящиеся плюс некоторые другие вещи.

В конце концов, эта переменная будет содержать все содержимое, что будет вставлен в наш документ программе textedit.

Таким образом, каждый раз повторять блок запускается через раз, я добавляю эту переменную и позволить ему развиваться, а не заменять его содержимое. В конце концов, эта переменная будет содержать все содержимое, что будет вставлен в наш документ программе textedit.

Разрывы строк и строк

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

Символ "" может быть введен в applescript с option+вернуться и указывает, что разрыв строки-это всего лишь визуальный и не должно влиять на то, как код выполняется.

Хотя в реальности все это одной строкой кода, которую я обычно пишу так:

[рабочей группы]
набор docText в docText & "<а href=" & "\"" & tabURL & "\">" & tabName & " и" & перевод строки как строки
[/помощью applescript]

Обратите внимание ближе к концу эта строка кода является слово "перевод строки". В отличие от поверхностных прорывается выше линии, это то, что я на самом деле хочу добавлены к переменной. В конце каждого элемента строки, вставить перевод строки, так что следующий элемент списка будет начинаться с новой строки. 

Строки & Escape-Символы

Странная вещь о HTML-текста, который мы пытаемся вставить, что в ней содержатся цитаты, которые фактически используются applescript для обозначения начала и конца строки вот так:

[рабочей группы]
набор mystring с "ковш крыса гнилой избушке"
[/помощью applescript]

Здесь мы инициировали переменной и наполнил ее текстом. Текст в кавычки и говорит помощью applescript, что переменная имеет Тип string.

Так что если помощью applescript использует кавычки, чтобы окружить строк, как мы храним кавычки как часть строки? Ответ на "побег" в кавычки обратным слешем вот так:

[рабочей группы]
набор mystring с "/"ковш крыса гнилой избушки/""
[/помощью applescript]

В первом примере, содержимое переменной следующим образом: ковш крыса гнилой избушке (хранится без кавычек). Во втором примере переменная на самом деле содержится ряд цитат: "ковш крыса гнилой избушки".

Собираем все вместе

Учитывая всю информацию, которую мы только что узнали, здесь есть отдельные кусочки, которые вставляются в нашу переменную и склеились.

  • <а href="
  • tabURL
  • ">
  • tabName
  • </a>
  • перевод строки

Когда все эти пункты вместе, и сценарий повторяется для каждой вкладки в каждом окне, мы должны иметь список, отформатированный в точности как на цель, которую мы поставили в начале.

1
2
<a href="www.siteurlone.com">Tab One Title Here</a>
3
<a href="www.siteurltwo.com">Tab Two Title Here</a>
4
<a href="www.siteurlthree.com">Tab Three Title Here</a>

Шаг 7. Создать Текстовый Документ

Теперь у нас есть вся эта информация хранится в одной переменной, пора что-то делать с ним. В нашем случае, мы хотим бросить его в текстовый документ.

Чтобы сделать это, создайте новый блок для textedit, и сказать вот так:

[рабочей группы]
сказать приложение "Сафари"

--Переменные
набор windowCount на количество окон
набор docText к ""

- Повторить для каждого окна
повторите с X от 1 до windowCount
набор tabcount чтобы количество вкладок в окне х

- Повторить для каждой вкладки в текущем окне
повторите с Y от 1 до tabcount

--Вам вкладку имя и URL-адрес
набор tabName на название вкладки у окна х
набор tabURL к URL-адрес вкладки у окна х

набор docText в docText & "<а href=" & "\"" & tabURL & "\">" & tabName & " и" & перевод строки как строки
конца повторять

конца повторять
конец сказать

--Напишите Текст Документа
рассказать приложения "textedit от"
активировать
сделать новый документ
набор текста передний документа docText
конец сказать
[/помощью applescript]

Внутри textedit, и рассказать блока я сделал три вещи: во-первых, я рассказал приложение для "активации", которая просто приносит его на передний план, так что вы можете видеть плоды своего труда.

Далее я рассказал программе textedit для создания нового документа. Наконец, я закончил сценарий, текст нового документа для переменной, которая содержит список ссылок.


Попробуйте

При том, что наш скрипт готов! Если ты продержалась так долго, поздравляю, вы уже написали больше помощью applescript, чем подавляющее большинство пользователей Mac и может считать себя членом элиты сообщества Мак ботаник.

Чтобы опробовать скрипт, убедитесь, что у вас Сафари открыть несколько вкладок и несколько окон в различные сайты. Как только вы это создали, просто нажмите кнопку play в applescript, чтобы смотреть волшебство произойдет.

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


Устранение неполадок

Неизбежно, многие из вас достигнет этой точки и нажмите сообщение об ошибке. Что-то пошло не так, но что? Чаще всего, ответ будет что-то просто опечатка. Вы уверены, что вошли в сценарий в точности, как указано выше? Помощью applescript, как правило, пытается указать на конкретную проблему, чтобы вы, следуете его советам и вводить проблемные линии.

Помощью applescript, как правило, пытается указать на конкретную проблему, чтобы вы, следуете его советам и вводить проблемные линии.

К сожалению, вполне возможно, что вы ввели все правильно и по-прежнему получаете сообщение об ошибке. Возможно, возникла проблема с вашей версией Safari или, возможно, сценарий не похож на веб-страницах, которые вы выбрали по какой-то неизвестной причине. Попробовать изменить и посмотреть, если вы можете определить проблему.

Обработка ошибок-это довольно глубокая тема, которую я рассмотрю в следующей статье, сейчас посмотрим на наши статьи о передовых методах помощью applescript для получения дополнительной информации о том, как можно изменить скрипт, чтобы предпринять определенные меры, когда возникает ошибка.

Заключение

Я просто провел вас через весь процесс написания applescript для создания списка ссылок с ваших открытых вкладок в Safari. Это должно сохранить вам много неприятностей на тех больших исследовательских проектов.

Надеюсь, по пути вы узнали много интересной информации о applescript и как подойти к автоматизации простых, но повторяющихся задач. Если у вас есть какие-либо вопросы, не стесняйтесь оставить комментарий ниже или присоединяйтесь к нам в Твиттере.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Computer Skills tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.