Supercharge Your Meetup Pro Data Analysis with Google Sheets and Apps Script

Siddhant Agarwal

--

Hey there, fellow Meetup organizers! Ever wished you could effortlessly sync your Meetup Pro data with Google Sheets for better insights and reporting? Well, you’re in luck! In this blog post, I’ll walk you through how to harness the power of Google Apps Script to fetch your Meetup Pro data and seamlessly integrate it into Google Sheets. Imagine having all your event data at your fingertips, ready for analysis, charts, and sharing with your team — all automatically updated. Let’s dive in and turn your data management from a chore into a breeze!

Source: DALL-E

Prerequisites

Before we dive into the code, you’ll need:

  • A Meetup Pro account
  • Access to the Meetup Pro API
  • A Google account
  • Basic knowledge of Google Apps Script

Setting Up the Google Apps Script

  1. Create a new Google Sheet: This is where your Meetup Pro data will be synced.
  2. Open the Script Editor: Go to Extensions > Apps Script.

Writing the Script

Here’s a step-by-step guide to writing the script:

1. Setting Up API Authentication

First, we need to set up authentication with the Meetup Pro API. The Meetup API supports authenticating requests using OAuth 2 over HTTPS. Meetup API provide implementations a number of protocol flows outlined below. They provide the following endpoints for acquiring member authorization and access tokens. Follow the steps here to get an access token.

var token = 'ACCESS_TOKEN';

2. Fetching Data from Meetup Pro

We’ll write a logic to fetch data from the Meetup Pro API. For example, let’s fetch the list of meetup groups part of Meetup Pro Network:

query ($urlname: String!){ \
proNetworkByUrlname(urlname: $urlname) { \
groupsSearch(filter: {}, input: {first: 50}){ \ // Currently the script fetches the information of first 50 Groups. The script needs to be modified if you have more than 50 groups in your Meetup Pro Network
count \
pageInfo { \
endCursor
} \
edges{ \
node{ \
id \
name \
proJoinDate \
foundedDate \
city \
groupAnalytics {\
totalPastEvents \
totalPastRsvps \
totalUpcomingEvents \
lastEventDate \
} \
memberships { \
count \
} \
} \
}\
} \
} \
} \
`;

3. Writing Data to Google Sheets

Next, we’ll write a logic to sync the fetched data to our Google Sheet:

var spreadsheetId = 'SPREADSHEET_ID'; // Replace with your Spreadsheet ID
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);

// Check if a sheet for the current month exists, if not create one
var sheet = spreadsheet.getSheetByName(currentMonth);
var isNewSheet = false;
if (!sheet) {
sheet = spreadsheet.insertSheet(currentMonth);
isNewSheet = true; // Flag to indicate a new sheet was created
}

// If it's a new sheet, add headers
if (isNewSheet) {
sheet.appendRow(["Timestamp", "User Group Name", "Member Count", "Pro Join Date", "Founded Date", "City", "Past RSVPs","Past Event Count", "Upcoming Events Count", "Last Event Date"]);
}

// Your existing code to extract data
var extracted_data = [];
var edges = data.data.proNetworkByUrlname.groupsSearch.edges;
var rowData = [];

for (var i = 0; i < edges.length; i++) {
var node = edges[i].node;
var name = node.name;
var count = node.memberships.count;
var pjd = node.proJoinDate;
var fd = node.foundedDate;
var city = node.city;
var pastrsvps = node.groupAnalytics.totalPastRsvps;
var pasteventcount = node.groupAnalytics.totalPastEvents;
var upcomingeventcount = node.groupAnalytics.totalUpcomingEvents;
var lasteventdate = node.groupAnalytics.lastEventDate;
var timestamp = new Date(); // Current timestamp
rowData.push([timestamp, name, count,pjd,fd,city,pastrsvps, pasteventcount,upcomingeventcount,lasteventdate]); // Your existing data preparation
}

// Write the data to the sheet starting from the first empty row after headers
var startRow = sheet.getLastRow() + 1; // Find the first empty row after headers
var range = sheet.getRange(startRow, 1, rowData.length, rowData[0].length);
range.setValues(rowData);

4. Automating the Sync Process

You can set a trigger to automate this sync process. Go to Triggers in the Script Editor and set up a time-driven trigger to run meetupquery periodically.

Running the Script

  • Save your script.
  • Run meetupquery to fetch and sync the data.

Conclusion

With this setup, you can easily sync your Meetup Pro data with Google Sheets and utilize the powerful features of Google Sheets for your data analysis. You can extend this script to fetch different types of data and create custom reports or dashboards to better understand your community’s engagement.

Feel free to check out the full code and additional scripts in my GitHub repository. Happy coding!

--

--

No responses yet