Why createEventSeries, not createEvent
CalendarApp has two paths: createEvent makes a single event, createEventSeries makes a recurring one. They take the same title, start, and end arguments, but createEventSeries requires a fourth argument — a RecurrenceRule object built from CalendarApp.newRecurrence(). Skip that object and you have no recurrence at all.
The recurrence builder is chainable. addWeeklyRule() sets the frequency; onlyOnWeekday() narrows it to specific days; times(12) caps it at 12 occurrences. You can also use until(date) to cap by date instead of count. The critical thing to know: if you call neither times() nor until(), the series repeats indefinitely. That sounds fine until you need to clean it up — there is no bulk-delete for event series in Apps Script, so you end up deleting individual instances in a loop, which is slow and quota-burning.