ℹ️ 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.
| 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 |
⚠️ 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}}.
{{NIGHTSCOUT_URL}}.{{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, eventsns-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.
nightscoutmonitorGlucoseMonitor (opened via Extensions → Apps Script){{GOOGLE_ACCOUNT}}getActiveSheet()), so all data lives on the first/default tab.⚠️ 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.