2017年12月22日 星期五

Google Tag Manager 內建變數- HTTP 參照網址(Referrer)


Google Tag Manager 內建變數- HTTP 參照網址(Referrer)


光看字面 Referrer HTTP 參照網址不知道是什麼碗糕,
其實這個變數是紀錄該頁面的"來源參考頁面",
內部其實是包javascript   document.referrer。

例如 :

從Google搜尋引擎 連結到這一頁的話,
Refferrer 將會是 https://www.google.com.tw/

從Facebook 連結到這一頁的話,
Refferrer 將會是 https://www.facebook.com/


從Bing 搜尋引擎 到這一頁的話,
Refferrer 將會是 https://www.bing.com/

又如:
假設 在 A.html 網頁有選單有個超連結選項 B.html, 當點選 B.html 進入B.html 時
B頁面的 referrer就會是 A.html


但有 Refererer 是空字串,所以似乎不能依賴這個值來判斷所有來源,
例如在我自已的blog連結到測試GTM的頁面時就是空值....

 Ruby's Louvre 的文章 有提到一些可能會讓referrer為空的原因。


我們可以透過Debug視窗來查看這個值





Google Tag Manager 變數類別 - 對照表( Lookup Table )

Google Tag Manager 變數類別 - 對照表(Lookup Table)


對照表( Lookup Table )

類似程式語法的 Switch case,
依輸入的條件值來準定輸出什麼值

例如:
Google Tag Manager在進行Debug模式時所觸發的GA可紀錄在另一個測試GA帳戶中,
避免因為Debug測試的資料影響GA的分析。

以下為設定方式:

Virable type: Lookup Table
Input Variable: {{Debug Mode}}
        (Debug Mode 是GTM的內建變數)
Lookup Table:
       true 時 GA-測試ID
       false 時 GA-正式ID



2017年12月21日 星期四

Google Tag Manager 紀錄HTML元素進入可視區域資訊

Google Tag Manager 紀錄HTML元素進入可視區域資訊


要紀錄當HTML 特定元素進到瀏灠器可視範圍時,可透過Element Visibility 這個trigger來解決,以下為Google Tag Manager 相關設定範例,目標是抓紀錄網頁中有title屬性的元素,並將該屬性的值紀錄下來:

建立Trigger:
Trigger Type: Element Visibility
Selection Method: CSS Selector
Element Selector:[title]:not([title=''])
           這裡的意思是抓取title屬性有值有的元素
When to fire this trigger: Once per element
           每個符合條件的元素進入可視範圍都會觸發,觸發一次後再次進入可視區不再觸發
Minimum Percent Visible:50 percent
           當元素大小有50%進入可視區才觸發


啟用內建變數: Click Element, Percent Visible, On-Screen Duration


自定變數:
     GA-ID :Google Analystic 的追蹤ID
     Get-Element-Attribute-Title :取得title屬性值



建立Tag:
Tag type: Universal Analystics(GA)
Track Type:Event
Category:可自行命名分類
Action:{{Page Path}}
Label:{{Get-Element-Attribute-Title}}
勾選 Enable overriding settings in this tag
Tracking ID: {{GA-ID}}

Trigger:選擇前面所建立的Trigger (元件進入可視區域)

2017年12月20日 星期三

Google Tag Manager 垂直捲動深度瀏灠追蹤

Google Tag Manager 垂直捲動深度瀏灠追蹤

當使用者瀏灠目標網頁時,如果要得知該次瀏灠到使用者在頁面看了多少比例?有這個資訊後可以用來檢討是不是網頁排版不夠吸引用戶,適時調整呈現頁面順序。

如何在 Google Tag Manager 設定以垂直捲動深度瀏灠追蹤為例:



建立Trigger:在Workspace的清單中點選 Trigger --> New:

 選擇Trigger Type 為 Scroll Depth:

為了後續容易辨識,設定Trigger名稱為 Scroll Depth Trigger,
Trigger的設定如下:


  • Vertical Scroll Depths追踨垂直深度捲動
  • 設定依頁面的"百分比": 10,25,50,75,100 (請自行決定要紀錄的間隔)
  • 設定 All Pages 會對網站的所有有埋Google Tag Manager程式碼的網頁中捲動事件做紀錄,如果要針特特定網頁可選 Some Pages,使用條件來設定要紀錄哪些網頁

完成後就 SAVE 存檔吧


再來我們須要用變數來接 捲動Trigger 所取得的資訊

點選 Variables -> Built-in Varibles -> Configure
跳出內建變數視窗後找到 Scrolling,將Scroll Depth Threshold, Scroll Depth Unit, Scroll Direction 都勾選。



因為我們要透過 Tag Manager 來把資訊紀錄到 GA (Google Analytics),方便以後不用每次都要手輸GA 的追蹤ID,所以這邊自已定義一個使用者變數,變數類別(Variable type) 選 常數(Constant),值的部份就填入目標網站的 GA 追蹤ID

Variables -> User-Defined Variables -> New



再來建立一個Tag,將資訊紀錄到 GA (Google Analytics )服務中:
Tag -> New

選擇 Tag Type 為 Universal Analytics (通用 GA)


為了方便辨識,把Tag命名為 Scroll Depth Tag
GA的設定如下:
  • Trace Type 追蹤類型 選 Event (事件)
  • Category  類別: Scroll Depth (可以自已定義在GA上要呈現的類別名稱
  • Action 動作:{{Page Path }}  網頁路徑 (透過右邊的按鈕選取變數進來)
  • Label 標籤: {{Scroll Depth Threshold}}   (透過右邊的按鈕選取變數進來)
  • Enable overriding settings in ths tag:勾選  
  • Tracking ID: {{GA Trace ID}}  (這是之前我們自訂定的GA追蹤ID 變數
  • Trigger: Scroll Depth Trigger




存檔後點選Perview預覽
工作區會出現以下資訊
意思是已經啟用Debug功能,可以瀏灠目標網頁,下方會出現Debug視窗,
請注意,如果設定有修改的話要點選 Refresh


看一下瀏灠目標網頁,的確有出現 Debug 視窗,Scroll Depth Tag 有被觸發了4次

確認沒問題後就 Submit 進行 Publish吧!



這邊須要知道一點,如果使用者已經捲到最下面,然後點選重新整理頁面,因為重整後頁面會直接跳到最下面,所以也會觸發紀錄所有捲動百分比,這樣會造成分析上的困擾,要避免這個情形的話可參考 Scroll-Depth-Trigger-Google-Tag-Manager 有解決方案

參考資料:

2017年12月12日 星期二

C# 語系對應表

System.Globalization.CultureInfo.CurrentCulture.Name 各語系的對應值:
af-ZA Afrikaans - South Africa
sq-AL Albanian - Albania
ar-DZ Arabic - Algeria
ar-BH Arabic - Bahrain
ar-EG Arabic - Egypt
ar-IQ Arabic - Iraq
ar-JO Arabic - Jordan
ar-KW Arabic - Kuwait
ar-LB Arabic - Lebanon
ar-LY Arabic - Libya
ar-MA Arabic - Morocco
ar-OM Arabic - Oman
ar-QA Arabic - Qatar
ar-SA Arabic - Saudi Arabia
ar-SY Arabic - Syria
ar-TN Arabic - Tunisia
ar-AE Arabic - United Arab Emirates
ar-YE Arabic - Yemen
hy-AM Armenian - Armenia
Cy-az-AZ Azeri (Cyrillic) - Azerbaijan
Lt-az-AZ Azeri (Latin) - Azerbaijan
eu-ES Basque - Basque
be-BY Belarusian - Belarus
bg-BG Bulgarian - Bulgaria
ca-ES Catalan - Catalan
zh-CN Chinese - China
zh-HK Chinese - Hong Kong SAR
zh-MO Chinese - Macau SAR
zh-SG Chinese - Singapore
zh-TW Chinese - Taiwan
zh-CHS Chinese (Simplified)
zh-CHT Chinese (Traditional)
hr-HR Croatian - Croatia
cs-CZ Czech - Czech Republic
da-DK Danish - Denmark
div-MV Dhivehi - Maldives
nl-BE Dutch - Belgium
nl-NL Dutch - The Netherlands
en-AU English - Australia
en-BZ English - Belize
en-CA English - Canada
en-CB English - Caribbean
en-IE English - Ireland
en-JM English - Jamaica
en-NZ English - New Zealand
en-PH English - Philippines
en-ZA English - South Africa
en-TT English - Trinidad and Tobago
en-GB English - United Kingdom
en-US English - United States
en-ZW English - Zimbabwe
et-EE Estonian - Estonia
fo-FO Faroese - Faroe Islands
fa-IR Farsi - Iran
fi-FI Finnish - Finland
fr-BE French - Belgium
fr-CA French - Canada
fr-FR French - France
fr-LU French - Luxembourg
fr-MC French - Monaco
fr-CH French - Switzerland
gl-ES Galician - Galician
ka-GE Georgian - Georgia
de-AT German - Austria
de-DE German - Germany
de-LI German - Liechtenstein
de-LU German - Luxembourg
de-CH German - Switzerland
el-GR Greek - Greece
gu-IN Gujarati - India
he-IL Hebrew - Israel
hi-IN Hindi - India
hu-HU Hungarian - Hungary
is-IS Icelandic - Iceland
id-ID Indonesian - Indonesia
it-IT Italian - Italy
it-CH Italian - Switzerland
ja-JP Japanese - Japan
kn-IN Kannada - India
kk-KZ Kazakh - Kazakhstan
kok-IN Konkani - India
ko-KR Korean - Korea
ky-KZ Kyrgyz - Kazakhstan
lv-LV Latvian - Latvia
lt-LT Lithuanian - Lithuania
mk-MK Macedonian (FYROM)
ms-BN Malay - Brunei
ms-MY Malay - Malaysia
mr-IN Marathi - India
mn-MN Mongolian - Mongolia
nb-NO Norwegian (Bokmål) - Norway
nn-NO Norwegian (Nynorsk) - Norway
pl-PL Polish - Poland
pt-BR Portuguese - Brazil
pt-PT Portuguese - Portugal
pa-IN Punjabi - India
ro-RO Romanian - Romania
ru-RU Russian - Russia
sa-IN Sanskrit - India
Cy-sr-SP Serbian (Cyrillic) - Serbia
Lt-sr-SP Serbian (Latin) - Serbia
sk-SK Slovak - Slovakia
sl-SI Slovenian - Slovenia
es-AR Spanish - Argentina
es-BO Spanish - Bolivia
es-CL Spanish - Chile
es-CO Spanish - Colombia
es-CR Spanish - Costa Rica
es-DO Spanish - Dominican Republic
es-EC Spanish - Ecuador
es-SV Spanish - El Salvador
es-GT Spanish - Guatemala
es-HN Spanish - Honduras
es-MX Spanish - Mexico
es-NI Spanish - Nicaragua
es-PA Spanish - Panama
es-PY Spanish - Paraguay
es-PE Spanish - Peru
es-PR Spanish - Puerto Rico
es-ES Spanish - Spain
es-UY Spanish - Uruguay
es-VE Spanish - Venezuela
sw-KE Swahili - Kenya
sv-FI Swedish - Finland
sv-SE Swedish - Sweden
syr-SY Syriac - Syria
ta-IN Tamil - India
tt-RU Tatar - Russia
te-IN Telugu - India
th-TH Thai - Thailand
tr-TR Turkish - Turkey
uk-UA Ukrainian - Ukraine
ur-PK Urdu - Pakistan
Cy-uz-UZ Uzbek (Cyrillic) - Uzbekistan
Lt-uz-UZ Uzbek (Latin) - Uzbekistan
vi-VN Vietnamese - Vietnam

2017年12月5日 星期二

Google Tag Manager 追蹤鏈結點選事件

Google Tag Manager 追蹤鏈結點選事件


簡單的紀錄 Trigger, Tag 的設定,請直接參考圖示設定值

其中:
Enable .... When 是想要監聽的目標網頁中的鏈結事件 所以通常是使用 Page_URL這個變數來進行條件判斷。
Fire On 是用來註冊何時觸發鏈結點選事件。
這邊列出比較常用的設定:

一般鏈結點選事件 :
Enable When: Page URL / matches regex / .*
Fire On: All Clicks


外部鏈結點選事件 :

Enable When: Page URL / matches regex / .*
Fire On: Click URL / does not contain / 當前網站的Domain Name

社交網站鏈結點選事件 :

Fire On: Click URL / matches regex (ignore case) / (facebook|twitter|youtube|spotify)\.com

mailto 鏈結點選事件 :

Enable When: Page URL / matches regex / .*
Fire On: Click URL / begins with / mailto:


下圖示為一般鏈結點選事件設定的範例






參考連結:

Google Tag Manager Help

Re: Click URL does not match RegEx doesn't seem to be working?

RDLC 無法建立資料集 'xxxx' 的資料讀取器


很少使用RDLC,最近開發測試時跑出錯誤,紀錄一下供以後遇到想同問題時可查詢

錯誤訊息:

{Microsoft.Reporting.WebForms.LocalProcessingException: 處理本機報表時發生錯誤。 ---> Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: 處理報表時發生錯誤。 ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: 無法建立資料集 'DataSet1' 的資料讀取器。


ReportDataSource的第一個參數得傳入DataSet1才是正確的


ReportViewer1.LocalReport.ReportPath = Server.MapPath("./Reports/xxxx.rdlc");
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new           Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", dt));

HTML Cach機制

這篇文章對HTML Cach機制解釋的很清楚

http://blog.techbridge.cc/2017/06/17/cache-introduction/