Стендап Сьогодні
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

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, але то вже на вихідних.