1

私はGoogleスプレッドシートのプロジェクトに取り組んでおり、編集/削除/改行などのようにシート上のアクティビティをトリガーするスクリプトを使用しています。これらのアクティビティは、測定プロトコルを使用してGoogleアナリティクスに送信されます。if..If Else .. google-appスクリプト内で機能を呼び出す

これは編集、newLineまたは削除された既存の値であると判断するIf ... Else if ... Elseを持っています。

これは私のコードです
//回答後のUPDATEDコードですが、それでも動作しません。

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(..)ステートメントの作品は、私は、メッセージボックスの警告を取得し、データをGoogleアナリティクスに送信され、ではなく、第二の打撃エルス(...)ブロックの場合。 msgboxアラートは機能しますが、GoogleAnalyticsSLETT();機能は起動しません。これはインストール可能なトリガーです

If Elseステートメントの関数を呼び出すことが許可されていない可能性がありますか、コードが間違っていますか?

+0

にあなたは 'Browser.msgBox()'デバッグに使用しないでください。 'Logger.log( 'variableName:' + variableName)'を使います。コードを実行してから、LOGSを表示します。また、実行記録は何を表していますか?どのコード行が失敗するか。私たちは行番号を知りたくありません。あなたのコードの行番号はわかりません。 –

答えて

2

私はおそらくこれを変更したい:else if (e.value.hasOwnProperty("oldValue"))この else if (e.oldvalue)

+0

私はこのメソッドを試しても期待どおりに動作しません。新しい値が追加されると、keyはstringにoldValueを持ちます。だから価値がない場合、条件は他になります – Asim

+0

あなたは実際に私を救ったのです。これが問題でした。 e.oldValue && e.value else if文に変更しました。 – Asim

関連する問題