I use Fantastical as it’s a much cleaner and native interface than Google Calendar, which I’m stuck using.
I do like to use the command line more than GUIs and, while I have other things set up to work with Google Calendar from the CLI, I’ve always wanted to figure out how to pull data from Fantastical to it.
So, I figured out a shortcut + Bash script combo to do that, and posted it into the box below. The link to the shortcut is in the comments of the script.
#!/usr/bin/env bash
# Changelog:
#
# 2024-03-23: Script created for scheduling tasks on macOS.
# Added error handling, usage information, and best practices.
# Usage:
#
# This script is intended to be used for getting the day's schedule from Fantastical
# It takes an optional date parameter in the format YYYY-MM-DD and uses the
# macOS 'shortcuts' command to run a scheduling query task. If no date is provided,
# or if the provided date is invalid, it defaults to today's date.
#
# Shortcut URL: https://www.icloud.com/shortcuts/7dc5cf4801394d05b9a71e5044fbf461
# Exit immediately if a command exits with a non-zero status.
set -o errexit
# Make sure the exit status of a pipeline is the status of the last command to exit with a non-zero status, or zero if no command exited with a non-zero status.
set -o pipefail
# Function to clean up temporary files before script exits
cleanup() {
rm -f "${SAVED}" "${OUTPUT}"
}
# Trap to execute the cleanup function on script exit
trap cleanup EXIT
# Check if a date parameter is provided
if [ "$1" ]; then
INPUT_DATE=$(date -j -f "%Y-%m-%d" "$1" "+%Y-%m-%d" 2>/dev/null) || {
echo "Invalid date format. Please use YYYY-MM-DD. Defaulting to today's date." >&2
INPUT_DATE=$(date "+%Y-%m-%d")
}
else
INPUT_DATE=$(date "+%Y-%m-%d")
fi
# Create temporary files for saving clipboard contents and output
SAVED=$(mktemp)
OUTPUT=$(mktemp)
# Save current clipboard contents
pbpaste >"${SAVED}"
# Copy the input date to the clipboard
echo "${INPUT_DATE}" | pbcopy
# Run the 'sched' shortcut
shortcuts run "sched"
# Save the output from the 'sched' shortcut
pbpaste >"${OUTPUT}"
# Restore the original clipboard contents
pbcopy <"${SAVED}"
# Display the output from the 'sched' shortcut
cat "${OUTPUT}"
2 Comments
@hrbrmstr 🤯 I like scripts, and I like shortcuts, but for some reason I'd never thought of doing something like this!
@hrbrmstr and bonus points for saving/restoring the clipboard! It's the little things…
2 Trackbacks/Pingbacks
[…] post Get A Day’s Schedule From Fantastical On The Command Line With Shortcuts appeared first on […]
[…] post Get A Day’s Schedule From Fantastical On The Command Line With Shortcuts appeared first on […]