Every morning, emails one briefing on today's conditions and the days ahead for each place you list.
Uses
Gmail
OpenWeatherMap
Morning weather briefing for the places you follow
locations to blank.Set locations to blank.recipient to blank.Set recipient to blank.units to metric.Set units to metric.rainChancePercent to 50.Set rainChancePercent to 50.windGustThreshold to 12.Set windGustThreshold to 12.temperatureUnit to °C.Set temperatureUnit to °C.windUnit to m/s.Set windUnit to m/s.units is imperialIf units is imperialYes
temperatureUnit to °F.Change temperatureUnit to °F.windUnit to mph.Change windUnit to mph.No
No steps
units is standardIf units is standardYes
temperatureUnit to K.Change temperatureUnit to K.No
No steps
locations by ; and save it as places.Split locations by ; and save it as places.sections.Start an empty list and save it as sections.unreadable.Start an empty list and save it as unreadable.flaggedDays.Start an empty list and save it as flaggedDays.place in places:For each place in places:place and save it as placeName.Trim place and save it as placeName.placeName is emptyIf placeName is emptyYes
No
No steps
lookupErrorIf a step below fails, save the error as lookupErrorTry
now.Get the current weather. Save it as now.forecast.Get the 5-day forecast. Save it as forecast.heading to placeName.Set heading to placeName.now.location isn't emptyIf now.location isn't emptyYes
now.location isn't emptyIf now.location isn't emptyYes
heading to now.location.Change heading to now.location.No
No steps
No
No steps
nowLine to Now: .Set nowLine to Now: .now.conditions isn't emptyIf now.conditions isn't emptyYes
now.conditions isn't emptyIf now.conditions isn't emptyYes
nowLine to nowLine@now.conditions, .Change nowLine to nowLine@now.conditions, .No
No steps
No
No steps
now.temperature isn't emptyIf now.temperature isn't emptyYes
nowLine to nowLine plus now.temperature rounded to the nearest integer plus temperatureUnit.Change nowLine to nowLine plus now.temperature rounded to the nearest integer plus temperatureUnit.now.feels_like isn't emptyIf now.feels_like isn't emptyYes
nowLine to nowLine (feels like now.feels_like rounded to the nearest integer@temperatureUnit).Change nowLine to nowLine (feels like now.feels_like rounded to the nearest integer@temperatureUnit).No
No steps
No
No steps
now.humidity isn't emptyIf now.humidity isn't emptyYes
nowLine to nowLine, humidity now.humidity rounded to the nearest integer%.Change nowLine to nowLine, humidity now.humidity rounded to the nearest integer%.No
No steps
now.wind_speed isn't emptyIf now.wind_speed isn't emptyYes
nowLine to nowLine, wind now.wind_speed rounded to the nearest integer windUnit.Change nowLine to nowLine, wind now.wind_speed rounded to the nearest integer windUnit.No
No steps
nowLine is Now: If nowLine is Now: Yes
nowLine to Now: no current reading was returned for this location..Change nowLine to Now: no current reading was returned for this location..No
No steps
steps to forecast.entries.Set steps to forecast.entries.forecastDays.Start an empty list and save it as forecastDays.entry in steps:For each entry in steps:entry.time contains T If entry.time contains TYes
entry.time split by T to the end of forecastDays and save it as forecastDays.Add the first item of entry.time split by T to the end of forecastDays and save it as forecastDays.No
No steps
forecastDays and save it as forecastDays.Remove duplicates from forecastDays and save it as forecastDays.dayLines.Start an empty list and save it as dayLines.day in forecastDays:For each day in forecastDays:dayLow to nothing. Set dayLow to nothing.dayHigh to nothing. Set dayHigh to nothing.dayChance to -1. Set dayChance to -1.dayGust to -1. Set dayGust to -1.dayHeadline to blank. Set dayHeadline to blank.daySnow to blank. Set daySnow to blank.entry in steps: For each entry in steps:entry.time split by T is day If the first item of entry.time split by T is dayYes
entry.temperature isn't emptyIf entry.temperature isn't emptyYes
dayLow is emptyIf dayLow is emptyYes
dayLow to entry.temperature.Change dayLow to entry.temperature.No
No steps
dayHigh is emptyIf dayHigh is emptyYes
dayHigh to entry.temperature.Change dayHigh to entry.temperature.No
No steps
entry.temperature is less than dayLowIf entry.temperature is less than dayLowYes
dayLow to entry.temperature.Change dayLow to entry.temperature.No
No steps
entry.temperature is greater than dayHighIf entry.temperature is greater than dayHighYes
dayHigh to entry.temperature.Change dayHigh to entry.temperature.No
No steps
No
No steps
entry.precipitation_probability isn't emptyIf entry.precipitation_probability isn't emptyYes
entry.precipitation_probability is greater than dayChanceIf entry.precipitation_probability is greater than dayChanceYes
dayChance to entry.precipitation_probability.Change dayChance to entry.precipitation_probability.entry.conditions isn't emptyIf entry.conditions isn't emptyYes
dayHeadline to entry.conditions.Change dayHeadline to entry.conditions.No
No steps
No
No steps
No
No steps
entry.wind_gust isn't emptyIf entry.wind_gust isn't emptyYes
entry.wind_gust is greater than dayGustIf entry.wind_gust is greater than dayGustYes
dayGust to entry.wind_gust.Change dayGust to entry.wind_gust.No
No steps
No
No steps
entry.condition_group is SnowIf entry.condition_group is SnowYes
daySnow to yes.Change daySnow to yes.No
No steps
No
No steps
dayName to blank. Set dayName to blank.dateError If a step below fails, save the error as dateErrorTry
day and save it as dayName.Get the day of the week for day and save it as dayName.On error
No steps
dayLabel to day. Set dayLabel to day.dayName isn't empty If dayName isn't emptyYes
dayLabel to dayName day.Change dayLabel to dayName day.No
No steps
dayParts. Start an empty list and save it as dayParts.dayLow isn't empty If dayLow isn't emptyYes
dayHigh isn't emptyIf dayHigh isn't emptyYes
dayLow rounded to the nearest integer is dayHigh rounded to the nearest…If dayLow rounded to the nearest integer is dayHigh rounded to the nearest…Yes
dayLow rounded to the nearest integer plus temperatureUnit to the end of dayParts and save it as dayParts.Add dayLow rounded to the nearest integer plus temperatureUnit to the end of dayParts and save it as dayParts.No
dayLow rounded to the nearest integer to dayHigh rounded to the nearest integer@temperatureUnit to the end of dayParts and save it as dayParts.Add dayLow rounded to the nearest integer to dayHigh rounded to the nearest integer@temperatureUnit to the end of dayParts and save it as dayParts.No
No steps
No
No steps
dayHeadline isn't empty If dayHeadline isn't emptyYes
dayHeadline to the end of dayParts and save it as dayParts.Add dayHeadline to the end of dayParts and save it as dayParts.No
No steps
dayChance is greater than or equal to 0 If dayChance is greater than or equal to 0Yes
dayChance multiplied by 100 rounded to the nearest integer% chance of precipitation to the end of dayParts and save it as dayParts.Add dayChance multiplied by 100 rounded to the nearest integer% chance of precipitation to the end of dayParts and save it as dayParts.No
No steps
dayGust is greater than or equal to 0 If dayGust is greater than or equal to 0Yes
dayGust rounded to the nearest integer windUnit to the end of dayParts and save it as dayParts.Add gusts to dayGust rounded to the nearest integer windUnit to the end of dayParts and save it as dayParts.No
No steps
dayLine to dayLabel: no readings were returned for this day. Set dayLine to dayLabel: no readings were returned for this day.dayParts isn't empty If dayParts isn't emptyYes
dayLine to dayLabel: dayParts joined by , .Change dayLine to dayLabel: dayParts joined by , .No
No steps
dayFlags. Start an empty list and save it as dayFlags.dayChance is greater than or equal to 0 If dayChance is greater than or equal to 0Yes
dayChance multiplied by 100 is greater than or equal to rainChancePercentIf dayChance multiplied by 100 is greater than or equal to rainChancePercentYes
high chance of precipitation to the end of dayFlags and save it as dayFlags.Add high chance of precipitation to the end of dayFlags and save it as dayFlags.No
No steps
No
No steps
dayGust is greater than or equal to 0 If dayGust is greater than or equal to 0Yes
dayGust is greater than or equal to windGustThresholdIf dayGust is greater than or equal to windGustThresholdYes
strong gusts to the end of dayFlags and save it as dayFlags.Add strong gusts to the end of dayFlags and save it as dayFlags.No
No steps
No
No steps
daySnow is yes If daySnow is yesYes
snow in the forecast to the end of dayFlags and save it as dayFlags.Add snow in the forecast to the end of dayFlags and save it as dayFlags.No
No steps
dayFlags isn't empty If dayFlags isn't emptyYes
dayLine to dayLine [dayFlags joined by ; ].Change dayLine to dayLine [dayFlags joined by ; ].heading day to the end of flaggedDays and save it as flaggedDays.Add heading day to the end of flaggedDays and save it as flaggedDays.No
No steps
dayLine to the end of dayLines and save it as dayLines. Add dayLine to the end of dayLines and save it as dayLines.section to headingSet section to heading
nowLine.dayLines isn't emptyIf dayLines isn't emptyYes
section to sectionChange section to section
Next five days:
- dayLines joined by
- .No
section to sectionChange section to section
No forecast steps were returned for the days ahead.section to the end of sections and save it as sections.Add section to the end of sections and save it as sections.On error
placeName to the end of unreadable and save it as unreadable.Add placeName to the end of unreadable and save it as unreadable.placeName: lookupError as text.Show in the output: Could not read the weather for placeName: lookupError as text.sections is emptyIf sections is emptyYes
failureMessage to No briefing was sent: none of the locations could be read. Check the 'locations' step - list places separated by semicolons, for example 'Berlin,DE; Lisbon,PT; 94103,US'..Set failureMessage to No briefing was sent: none of the locations could be read. Check the 'locations' step - list places separated by semicolons, for example 'Berlin,DE; Lisbon,PT; 94103,US'..unreadable isn't emptyIf unreadable isn't emptyYes
failureMessage to failureMessage Could not read: unreadable joined by , .Change failureMessage to failureMessage Could not read: unreadable joined by , .No
No steps
failureMessage.Stop and report a problem: failureMessage.No
No steps
briefing to Morning weather briefing.Set briefing to Morning weather briefing.flaggedDays isn't emptyIf flaggedDays isn't emptyYes
briefing to briefingChange briefing to briefing
Days above your thresholds: flaggedDays joined by ; .No
briefing to briefingChange briefing to briefing
No days above your thresholds in the next five days.briefing to briefingChange briefing to briefing
sections joined by a blank line.unreadable isn't emptyIf unreadable isn't emptyYes
briefing to briefingChange briefing to briefing
Could not read: unreadable joined by , . Check the spelling, or add a country code - for example 'Springfield,US'.No
No steps
briefing to briefingChange briefing to briefing
Thresholds: precipitation chance at or above rainChancePercent%, gusts at or above windGustThreshold windUnit.subject to Morning weather briefing.Set subject to Morning weather briefing.flaggedDays isn't emptyIf flaggedDays isn't emptyYes
subject to subject - the length of flaggedDays day(s) above your thresholds.Change subject to subject - the length of flaggedDays day(s) above your thresholds.No
No steps
recipient.Send an email to recipient.
Subject: subjectbriefing