태스크

이 가이드에서는 analytics.js가 측정 프로토콜 요청을 검사, 구성, 전송하는 방식을 맞춤설정하는 데 사용되는 고급 기능인 작업에 대해 설명합니다.

개요

send 명령어가 호출될 때마다 analytics.js는 일련의 작업을 실행하여 측정 프로토콜 요청을 검사 및 구성하고 사용자 브라우저에서 Google 애널리틱스로 전송합니다. 다음 표에서는 이러한 각 작업을 실행되는 순서대로 설명합니다.

작업 이름 설명
customTask 기본적으로 이 작업은 아무 일도 하지 않습니다. 맞춤 동작을 제공하도록 작업을 재정의하세요.
previewTask Safari용 '상위 사이트' 썸네일을 생성하기 위해 페이지를 렌더링하는 경우에만 요청을 취소합니다.
checkProtocolTask 페이지 프로토콜이 http 또는 https가 아니면 요청을 취소합니다.
validationTask 필수 입력란이 누락되거나 잘못된 경우 요청을 취소합니다.
checkStorageTask 추적기는 쿠키를 사용하도록 구성되어 있지만 사용자의 브라우저에서 쿠키가 사용 중지된 경우, 요청을 취소합니다.
historyImportTask 사이트를 유니버설 애널리틱스로 이전할 때 방문자 기록을 보존하기 위해 ga.js 및 urchin.js 쿠키에서 정보를 가져옵니다.
samplerTask 이 추적기의 sampleRate 설정을 기반으로 방문자를 샘플링합니다.
buildHitTask 측정 프로토콜 요청 문자열을 빌드하고 hitPayload 필드에 저장합니다.
sendHitTask hitPayload 필드에 저장된 측정 프로토콜 요청을 Google 애널리틱스 서버로 전송합니다.
timingTask 이 추적기의 siteSpeedSampleRate 설정을 기반으로 사이트 속도 타이밍 조회를 자동으로 생성합니다.
displayFeaturesTask 디스플레이 기능이 사용 설정되어 있고 광고 기능 쿠키(_gat)에서 설정한 시간 제한 내에 이전 조회가 전송되지 않은 경우, 추가 조회를 전송합니다.

이러한 각 작업은 단일 모델 매개변수를 입력으로 사용하는 자바스크립트 함수로 구현됩니다. 모델은 Analytics.js 필드 참조에 정의된 모든 필드에 대한 액세스를 제공하는 간단한 객체입니다.

작업은 표준 추적기 getset 메서드를 사용하여 액세스 또는 대체할 수 있습니다. 이러한 메서드를 사용하면 작업을 자체 커스텀 함수로 대체하거나, 기존 작업 전후에 실행할 맞춤 함수를 연결하여 기존 기능을 보강할 수 있습니다.

구현

이 섹션에서는 새 기능을 기존 작업에 추가하거나, 기본으로 제공되는 작업 함수를 자체 커스텀 코드로 대체하거나, 작업 함수를 완전히 사용 중지하는 방법을 설명합니다.

작업 재정의

작업을 재정의하려면 다른 작업을 수행하는 함수로 값을 set하면 됩니다. 작업을 재정의하는 일반적인 이유는 analytics.js 구현을 테스트할 때 기능을 스텁하기 위해서입니다.

다음 코드를 통해 sendHitTask를 조회 페이로드를 콘솔에 로깅하는 함수로 대체할 수 있습니다.

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'sendHitTask', function(model) {
  console.log(model.get('hitPayload'));
});

작업에 추가

새로운 기능을 삽입하기 위해 기존 작업 전후에 실행할 맞춤 작업 함수를 연결할 수 있습니다. 아래 예시에서 sendHitTask는 원래 sendHitTask 함수를 호출하여 일반 요청 비콘을 google-analytics.com/collection으로 전송한 다음, 측정 프로토콜 요청의 사본을 로컬 서버로 전송하기 위해 커스텀 코드를 실행하는 맞춤 작업 함수로 대체됩니다.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {

  // Grab a reference to the default sendHitTask function.
  var originalSendHitTask = tracker.get('sendHitTask');

  // Modifies sendHitTask to send a copy of the request to a local server after
  // sending the normal request to www.google-analytics.com/collect.
  tracker.set('sendHitTask', function(model) {
    originalSendHitTask(model);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/localhits', true);
    xhr.send(model.get('hitPayload'));
  });
});

ga('send', 'pageview');

작업 처리 취소

작업은 예외를 발생시켜 후속 작업의 처리를 취소할 수 있습니다. 예외를 발생시킨 작업이 sendHitTask 이전에 실행되면 측정 프로토콜 요청이 Google 애널리틱스 서버로 전송되지 않도록 하는 효과가 있습니다. 아래 예시에서는 사용자의 브라우저에 값이 'true'인 'testing'이라는 쿠키가 포함될 때마다 요청을 취소합니다.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {
  var originalBuildHitTask = tracker.get('buildHitTask');
  tracker.set('buildHitTask', function(model) {
    if (document.cookie.match(/testing=true/)) {
      throw 'Aborted tracking for test user.';
    }
    originalBuildHitTask(model);
  });
});

ga('send', 'pageview');

작업 사용 중지

기본으로 제공되는 작업 함수를 사용 중지하려면 null로 바꿉니다.

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');