This example shows how to send data to Google Analytics using the Measurement protocol. The event data is sent via POST because it allows for a larger payload. The parameter z is set with a random number for cache busting. We can set the hit type (t) to either pageview, event or exception.
function GoogleAnalytics_(t, param1, param2) { // Credit: @guimspace try { var meta = []; meta.push( ['v', '1'], ['tid', 'UA-XXXXXXXX-1'], ['cid', uuid_()], ['z', Math.floor(Math.random() * 10E7)], ['t', t] ); if (t == 'event') { meta.push(['ec', param1], ['ea', param2]); } else if (t == 'exception') { meta.push(['dt', param1], ['exd', param2]); } else throw 101; var payload = meta.map(function (el) { return el.join('='); }).join('&'); var options = { 'method': 'post', 'payload': payload }; UrlFetchApp.fetch('https://ssl.google-analytics.com/collect', options); } catch (e) {} return; } /* Generates a random UUID to anonymously identify the client */ function uuid_() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); }