1

我正在谷歌電子表格中的項目工作,並正在使用一個腳本,將觸發表單上的活動,如編輯/刪除/ NewLine等..和這些活動會通過測量協議發送到Google Analytics(分析)。內部調用函數If..If Else..Else內谷歌應用程序腳本

現在我有一個If ... Else if ... Else它確定這是一個編輯,newLine或已刪除的現有值。

這是我的代碼:
//在回答後更新了代碼,但仍無法正常工作。

var GoogleAnalyticsEDIT; 
var GoogleAnalyticsSLETT; 
var GoogleAnalyticsREDIGER; 


// MP 
// EDIT SEND 
GoogleAnalyticsEDIT = function GoogleAnalyticsEDIT(tid){ 
    var data = { 'v': '1', 
       't' : 'event', 
       'tid': tid,   // TrackingID Google Analytics 
       'cid': Session.getTemporaryActiveUserKey(), 
       'ec': 'SpreadSheet', // Event Kategori. 
       'ea': 'nyVerdi-'+noLetter, // Event Hendelse(action) 
       'el': SpreadsheetApp.getActiveSpreadsheet().getName(), 
       'ev': '300' };  // test og fjern                <----- TEST OG FJERN 
    var payload = Object.keys(data).map(function(key) { 
             return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); 
            }).join('&'); 
    var options = {'method' : 'POST', 
       'payload' : payload }; 
    UrlFetchApp.fetch('http://www.google-analytics.com/collect', options); 
} 



//MP 
// SLETT SEND 
GoogleAnalyticsSLETT = function GoogleAnalyticsSLETT(tid){ 
    var data = { 'v': '1', 
       't' : 'event', 
       'tid': tid,   // TrackingID Google Analytics 
       'cid': Session.getTemporaryActiveUserKey(), 
       'ec': 'SpreadSheet', // Event Kategori. 
       'ea': 'slettVerdi-'+noLetter, // Event Hendelse(action) 
       'el': SpreadsheetApp.getActiveSpreadsheet().getName(), 
       'ev': '300' };  // test og fjern                <----- TEST OG FJERN 
    var payload = Object.keys(data).map(function(key) { 
             return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); 
            }).join('&'); 
    var options = {'method' : 'POST', 
       'payload' : payload }; 
    UrlFetchApp.fetch('http://www.google-analytics.com/collect', options); 
} 




// MP 
// REDIGER SEND 
GoogleAnalyticsREDIGER = function GoogleAnalyticsREDIGER(tid){ 
    var data = { 'v': '1', 
       't' : 'event', 
       'tid': tid,   // TrackingID Google Analytics 
       'cid': Session.getTemporaryActiveUserKey(), 
       'ec': 'SpreadSheet', // Event Kategori. 
       'ea': 'redigerVerdi-'+noLetter, // Event Hendelse(action) 
       'el': SpreadsheetApp.getActiveSpreadsheet().getName(), 
        };  // test og fjern                <----- TEST OG FJERN 
    var payload = Object.keys(data).map(function(key) { 
             return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); 
            }).join('&'); 
    var options = {'method' : 'POST', 
       'payload' : payload }; 
    UrlFetchApp.fetch('http://www.google-analytics.com/collect', options); 
} 




//FUNKSJON ---- DEBUG 
var newValue = (typeof e.value == "object" ? e.range.getValue() : e.value); 
var oldValue = (typeof e.oldValue == "object" ? e.range.getValue() : e.oldValue); 


    if (!e.oldValue) { 
    Browser.msgBox("GA: newValue (NY LINJE)"); 
    GoogleAnalyticsEDIT("UA-101502909-2"); 
    } 

    else if (e.value.hasOwnProperty("oldValue")) { 
    GoogleAnalyticsSLETT("UA-101502909-2"); 
    } 

    else { 
    Browser.msgBox("GA: ChangeValue (REDIGERT VERDI)"); 
    GoogleAnalyticsREDIGER("UA-101502909-2") 

    } 


} //slutt: MyOnEditNeW(); 

問題:第一IF(..)語句的工作,我得到的MSGBOX警報和數據被髮送到谷歌Analytics(分析),但不是第二次打擊的if else(...)塊。 msgbox警報有效,但不會觸發GoogleAnalyticsSLETT();函數。這是一個可安裝的觸發器

任何人都知道,也許它不允許在If If語句中調用函數,或者是我的代碼錯誤?

+0

你不應該使用'Browser.msgBox()'進行調試。使用Logger.log('variableName:'+ variableName)'運行代碼然後查看LOGS。另外,執行抄本是什麼狀態?哪行代碼失敗。我們不想知道行號。我們不知道你的代碼的行號。 –

回答

2

我可能會改變這一點:else if (e.value.hasOwnProperty("oldValue"))這個 else if (e.oldvalue)

+0

當我嘗試使用此方法時無法正常工作。當新值添加時,鍵在字符串中具有oldValue。所以如果沒有任何價值,那麼條件是其他 – Asim

+0

你實際上救了我。這是問題所在。將其更改爲e.oldValue && e.value on else if語句現在可以工作。 – Asim