Page Summary
-
This code demonstrates how to use the Sportsradar API to retrieve English Premier League soccer schedules for potential use in adjusting advertising campaigns.
-
The script connects to the Sportradar Soccer Schedule API, parsing the XML response to extract fixture information such as date, home team, and away team.
-
The provided functions facilitate fetching the schedule for a specific date and filtering the results to include only English Premier League matches.
-
The code includes placeholders for an API key and an email address for failure notifications, along with options for trial or production access.
Retrieve a list of fixtures for the English Premier League
/** * @fileoverview Example of using Sportsradar API to get English Premier League * soccer schedules, to use in adjusting campaigns. * The principles of this example could easily be reused against any of the * sports feeds available from Sportradar. * * Example: Get fixtures on 1st Oct 2016 * const schedule = getSoccerSchedule(2016, 10, 1); * * See https://developers.google.com/google-ads/scripts/docs/features/third-party-apis#working_with_api_responses * See http://developer.sportradar.us/ */ // Replace with the API Key found on your Sportradar API Application page . const API_KEY = 'ENTER_API_KEY' ; // Insert your email address here for notification of API request failures . const EMAIL_ADDRESS = 'ENTER_EMAIL_ADDRESS' ; const VERSION = 2 ; const LEAGUE = 'eu' ; // Set to false when no longer in trial mode . const TRIAL_MODE = true ; /** * Retrieves a list of fixtures from the Soccer Schedule API. * @param {number} year The year for which to get matches, in the form yyyy. * @param {number} month The month for which to get matches, in range 1-12. * @param {number} day The day for which to get matches, in range 1-31. * @return {!Array.<!Object>} An array of object containing fixture info or * null if the request was unsuccessful. */ function getSoccerSchedule ( year , month , day ) { const urlTemplate = 'https://api.sportradar.us/soccer-%s%d/%s/matches/%d/%02d/%02d/schedule.xml?api_key=%s' ; const accessLevel = TRIAL_MODE ? 't' : 'p' ; const url = Utilities . formatString ( urlTemplate , accessLevel , VERSION , LEAGUE , year , month , day , API_KEY ); const response = UrlFetchApp . fetch ( url ); return parseScheduleXml ( response . getContentText ()); } /** * Converts the date format returned from the XML feed into a Date object. * @param {string} scheduleDate A date from the feed e.g. 2016-07-11T17:00:00Z * @return {!Date} The resulting Date object. */ function parseScheduleDate ( scheduleDate ) { return new Date ( scheduleDate . replace ( /-/ g , '/' ). replace ( 'T' , ' ' ). replace ( 'Z' , ' GMT' )); } /** * Parses the schedule XML, identifying only English Premier League Soccer * matches, as an example of selecting events on which to make Google Ads * changes. * @param {string} xmlText XML response body from a call to the soccer schedule * API. * @return {!Array.<!Object>} An array of object containing fixture info. */ function parseScheduleXml ( xmlText ) { const fixtures = [] ; const scheduleElement = XmlService . parse ( xmlText ). getRootElement (); // The namespace is required for accessing child elements in the schema . const namespace = scheduleElement . getNamespace (); const matchesElement = scheduleElement . getChild ( 'matches' , namespace ); const matchElements = matchesElement . getChildren (); for ( let i = 0 , matchElement ; matchElement = matchElements [ i ] ; i ++ ) { const status = matchElement . getAttribute ( 'status' ). getValue (); const scheduled = matchElement . getAttribute ( 'scheduled' ). getValue (); const scheduledDate = parseScheduleDate ( scheduled ); const categoryElement = matchElement . getChild ( 'category' , namespace ); const country = categoryElement . getAttribute ( 'country' ). getValue (); const tournamentElement = matchElement . getChild ( 'tournament' , namespace ); const tournamentName = tournamentElement . getAttribute ( 'name' ). getValue (); if ( tournamentName === 'Premier League' && country === 'England' ) { const homeElement = matchElement . getChild ( 'home' , namespace ); const awayElement = matchElement . getChild ( 'away' , namespace ); const homeTeamName = homeElement . getAttribute ( 'name' ). getValue (); const awayTeamName = awayElement . getAttribute ( 'name' ). getValue (); fixtures . push ( { date : scheduledDate , homeTeam : homeTeamName , awayTeam : awayTeamName } ); } } return fixtures ; }

