與 Google Analytics (分析) 整合

Google Analytics (分析) 平台可讓您衡量使用者在各種裝置和環境中與貴公司互動的情況。Google Analytics (分析) 提供用於收集、儲存、處理及回報這些使用者互動的資源。

您可以收集用戶端和伺服器端的分析數據。

用戶端分析數據收集

您可利用 Google Analytics API 和 SDK,衡量使用者如何與您的內容和行銷活動互動,也可以在 Google Analytics (分析) 使用者介面中查看使用者互動資料,或使用 Reporting API 擷取資料。如要進一步瞭解用戶端分析數據收集,請依照用戶端類型選取下列相關連結:

  • Web Tracking (analytics.js):衡量使用者與網站或網路應用程式的互動情況。
  • Android:衡量使用者與 Android 應用程式的互動情況。
  • iOS:衡量使用者與 iOS 應用程式的互動情況。
  • Measurement Protocol:衡量使用者在任何環境中與這類低層級通訊協定的互動情況。

伺服器端分析數據收集

雖然 App Engine 提供用於記錄應用程式事件的機制,您仍然可以使用 Google Analytics (分析) 來追蹤其中特定伺服器端事件,如此您就能:

  • 分析歷史資料:App Engine 可讓您設定記錄檔的天數或大小上限。超過此上限後,您將無法存取這些記錄檔。而 Google Analytics (分析) 的追蹤事件功能,可讓您查看時間跨度較長的事件記錄。
  • 追蹤重要事件:由於應用程式的各種元件會將資料寫入記錄檔,因此這些檔案可能相當繁雜。事件追蹤功能可以讓您精確鎖定重要事件,並且進一步追蹤這些事件和某些中繼資料。
  • 在使用者介面中操作:Google Analytics (分析) 提供豐富的使用者介面,可用於視覺化、回報及匯出伺服器端事件。

如要啟用伺服器端分析數據收集,您可以透過 HTTP 用戶端使用 Google Analytics Measurement Protocol 發出 HTTP 要求。詳情請參閱 Google Analytics (分析) 開發人員指南的事件追蹤部分。

範例應用程式

下列範例應用程式顯示如何在 App Engine 應用程式中追蹤事件。應用程式會發出 HTTP 要求,並將事件相關資料發佈於 Google Analytics (分析) 中。

在使用 App Engine 上的 Google Analytics Measurement Protocol 之前,請先執行下列操作:

  • 在本機上執行範例應用程式前,請先設定應用程式所需的環境變數:

    export GA_TRACKING_ID=YOUR_TRACKING_ID
    
  • 您可以使用下列指令列,在本機上執行範例程式碼。例如:

    go run analytics.go
    

  • 您可以將下列程式碼整合至 App Engine 應用程式中,以將事件追蹤資料發布至 Google Analytics (分析):

    
    // Sample analytics demonstrates Google Analytics calls from App Engine flexible environment.
    package main
    
    import (
    	"errors"
    	"fmt"
    	"log"
    	"net"
    	"net/http"
    	"net/url"
    	"os"
    
    	uuid "github.com/gofrs/uuid"
    
    	"google.golang.org/appengine"
    )
    
    var gaPropertyID = mustGetenv("GA_TRACKING_ID")
    
    func mustGetenv(k string) string {
    	v := os.Getenv(k)
    	if v == "" {
    		log.Fatalf("%s environment variable not set.", k)
    	}
    	return v
    }
    
    func main() {
    	http.HandleFunc("/", handle)
    
    	appengine.Main()
    }
    
    func handle(w http.ResponseWriter, r *http.Request) {
    	if r.URL.Path != "/" {
    		http.NotFound(w, r)
    		return
    	}
    
    	if err := trackEvent(r, "Example", "Test action", "label", nil); err != nil {
    		fmt.Fprintf(w, "Event did not track: %v", err)
    		return
    	}
    	fmt.Fprint(w, "Event tracked.")
    }
    
    func trackEvent(r *http.Request, category, action, label string, value *uint) error {
    	if gaPropertyID == "" {
    		return errors.New("analytics: GA_TRACKING_ID environment variable is missing")
    	}
    	if category == "" || action == "" {
    		return errors.New("analytics: category and action are required")
    	}
    
    	v := url.Values{
    		"v":   {"1"},
    		"tid": {gaPropertyID},
    		// Anonymously identifies a particular user. See the parameter guide for
    		// details:
    		// https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid
    		//
    		// Depending on your application, this might want to be associated with the
    		// user in a cookie.
    		"cid": {uuid.Must(uuid.NewV4()).String()},
    		"t":   {"event"},
    		"ec":  {category},
    		"ea":  {action},
    		"ua":  {r.UserAgent()},
    	}
    
    	if label != "" {
    		v.Set("el", label)
    	}
    
    	if value != nil {
    		v.Set("ev", fmt.Sprintf("%d", *value))
    	}
    
    	if remoteIP, _, err := net.SplitHostPort(r.RemoteAddr); err != nil {
    		v.Set("uip", remoteIP)
    	}
    
    	// NOTE: Google Analytics returns a 200, even if the request is malformed.
    	_, err := http.PostForm("https://www.google-analytics.com/collect", v)
    	return err
    }
    

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Go 適用的 App Engine 彈性環境