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 https://developer.sportradar.com/ */ // 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 = 4; const LEAGUE = 'en'; // 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.com/soccer/%s/v%d/%s/schedules/%d-%02d-%02d/schedules.xml'; const accessLevel = TRIAL_MODE ? 'trial' : 'production'; const url = Utilities.formatString( urlTemplate, accessLevel, VERSION, LEAGUE, year, month, day); const response = UrlFetchApp.fetch(url, { headers: { 'x-api-key': API_KEY } }); 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 rootElement = XmlService.parse(xmlText).getRootElement(); // The namespace is required for accessing child elements in the schema. const namespace = rootElement.getNamespace(); const scheduleElement = rootElement.getChild('schedule', namespace); if (!scheduleElement) { return fixtures; } const sportEventElements = scheduleElement.getChildren('sport_event', namespace); for (let i = 0; i < sportEventElements.length; i++) { const sportEventElement = sportEventElements[i]; const scheduled = sportEventElement.getAttribute('start_time').getValue(); const scheduledDate = parseScheduleDate(scheduled); const contextElement = sportEventElement.getChild('sport_event_context', namespace); const categoryElement = contextElement.getChild('category', namespace); const country = categoryElement.getAttribute('name').getValue(); const competitionElement = contextElement.getChild('competition', namespace); const tournamentName = competitionElement.getAttribute('name').getValue(); if (tournamentName === 'Premier League' && country === 'England') { const competitorsElement = sportEventElement.getChild('competitors', namespace); const competitorElements = competitorsElement.getChildren('competitor', namespace); let homeTeamName = ''; let awayTeamName = ''; for (let j = 0; j < competitorElements.length; j++) { const competitorElement = competitorElements[j]; const qualifier = competitorElement.getAttribute('qualifier').getValue(); const teamName = competitorElement.getAttribute('name').getValue(); if (qualifier === 'home') { homeTeamName = teamName; } else if (qualifier === 'away') { awayTeamName = teamName; } } fixtures.push({ date: scheduledDate, homeTeam: homeTeamName, awayTeam: awayTeamName }); } } return fixtures; }