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.
// Credit: @guimspace
function GoogleAnalytics_(t, param1, param2) {
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);
});
}