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);
  });
} 
  
  
  
  
 