ℹ️ A step-by-step reference for the system that monitors blood glucose via Nightscout Pro, polls it with a Google Apps Script bound to a Google Sheet, and triggers Alexa announcements via IFTTT → Voice Monkey when readings cross low / pre-low / high thresholds.

⚠️ Accuracy note. Sections 2, 3, and 4 are reconstructed directly from the actual code and values used. Sections 1, 5, 6, and 7 contain items configured outside the build notes — those are marked ⚠️ FILL IN. Section 5 also contains an important design correction. Sensitive values appear as {{PLACEHOLDERS}}, listed in Section 10.

1. Prerequisites

Accounts / services needed

Service Purpose Tier used
Nightscout Pro (nightscoutpro.com) Hosts the Nightscout site that exposes glucose data as JSON ⚠️ FILL IN — {{NIGHTSCOUT_PRO_PLAN}}
CGM data source Feeds readings into Nightscout — your setup uses LibreView credentials (FreeStyle Libre) LibreView account (free)
Google account Hosts the Google Sheet + Apps Script + time-driven trigger Free
IFTTT Watches the sheet's trigger cells and fires the Voice Monkey action ⚠️ FILL IN — {{IFTTT_PLAN}}. This build uses 3 applets, so a paid tier (Pro / Pro+) is likely required.
Voice Monkey Bridges IFTTT → Alexa; produces the spoken announcement ⚠️ FILL IN — {{VOICE_MONKEY_PLAN}}
Amazon Alexa The physical Echo device that speaks the alert Any announcement-capable Echo, signed into the Amazon account linked to Voice Monkey

Approximate monthly cost

⚠️ FILL IN — total = Nightscout Pro plan + IFTTT plan + Voice Monkey (if paid). LibreView and the Google/Apps Script side are free. {{NIGHTSCOUT_PRO_COST}} + {{IFTTT_COST}} + {{VOICE_MONKEY_COST}}{{TOTAL_MONTHLY_COST}}.

CGM-side setup that must happen FIRST

  1. FreeStyle Libre data must be flowing into LibreView.
  2. Nightscout Pro must be created and linked to those LibreView credentials so the site is live and populated. The live site is {{NIGHTSCOUT_URL}}.
  3. Confirm the site works by opening {{NIGHTSCOUT_URL}}/api/v1/entries/current.json in a browser — it should return an array with an sgv value. Everything downstream depends on this endpoint.

ℹ️ Historical note: an earlier attempt used a self-hosted Heroku Nightscout instance and Nightscout's native IFTTT Maker integration (MAKER_KEY, events ns-urgent-low / ns-urgent-high). That did not fire reliably with Nightscout Pro, which is why the project moved to the Google Sheets polling approach below.

2. Google Sheet Setup

⚠️ Clean-up before publishing: the live sheet has leftover scaffolding text in rows 5–19 (THRESHOLD SETTINGS, WHAT YOU SHOULD SEE, IFTTT SETUP, etc.) carried over from the original CSV import. It is harmless — the script only reads and writes row 2 — but delete rows 5–19 before taking screenshots.

Column layout (row 1 = headers, row 2 = live data)