Стендап Сьогодні
📢
Канал в Telegram @stendap_sogodni
🦣
@stendap_sogodni@shevtsov.me в Федиверсі
26.09.2025
Apple Shortcuts - досвід реалізації
Оце вже робочий скрипт, який створює резервну копію. На macOS немає можливості запускати його за розкладом, зате на iOS - є, а скрипти — спільні.
Сьогодні випустив невеличке для мене, значне для користувачів оновлення для Reminders2JSON. (Нагадаю, що це маленька утиліта для експорту всього змісту Apple Reminders у JSON - наприклад, щоб мати резервну копію.) Отже, тепер ту ж саму дію можна запустити через Shortcuts. А значить — легко автоматизувати.
Впровадити Shortcuts виявилося ще простіше, ніж я думав. Достатньо оголосити клас, який реалізує протокол AppIntent. В складі цього протоколу — дати йому людську назву, а також оголосити обробник. І все! Після цього наша дія сама зʼявляється у Shortcuts.
Звісно, на відміну від діалогового режиму, тут я нікуди результат не зберігаю, а просто повертаю рядком. Далі вже користувач сам — хоче у файл збереже, хоче надішле поштою, а може взагалі цей JSON розбере та буде щось робити з ним. На ілюстрації — скрипт, який я вже налаштував собі для щоденного резервного копіювання.
Параметри дії оголошуються декларативно, а потім обробник просто до них звертається.
@Parameter(title: "Include Completed") var includeCompleted: Bool
А сам обробник виглядає десь так:
func perform() async throws -> some ReturnsValue<String> {
let jsonData = try await RemindersExportService.exportReminders(includeCompleted: includeCompleted)
let jsonString = String(data: jsonData, encoding: .utf8) ?? ""
return .result(value: jsonString)
}
Тобто все простіше нікуди. До речі, Data
(тобто двійковий масив) повернути не можна. Що трохи цікаво, бо не знаю, як Shorcuts працюють з дійсно двійковими даними. Може, через файли?
А ще я майже адаптував Reminders2JSON під iOS, але то вже на вихідних.