Вызов функции внутри If..If Else..Else внутри скрипта google-app

1

Я работаю над проектом в электронной таблице Google и использую скрипт, который активирует активность на листе, например Edit/Delete/NewLine и т.д., И эти действия отправляются в Google Analytics с помощью протокола измерений.

Теперь у меня есть 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, и данные отправляются в Google Analytics, НО НЕ второй удар If Else (...). Предупреждение msgbox работает, но GoogleAnalyticsSLETT(); функция не запускается. Это установочный триггер

Кто-нибудь знает, что, возможно, не разрешено вызывать функцию в инструкции If Else, или мой код неправильный?

  • 0
    Вы не должны использовать Browser.msgBox() для отладки. Используйте Logger.log('variableName: ' + variableName) Запустите код и затем ПРОСМОТРИТЕ ЛОГИ. Кроме того, что означает Transcript Execution? Какая строка кода не работает. Мы не хотим знать номер строки. Мы не знаем номера строк вашего кода.
Теги:
if-statement
google-apps-script
google-analytics
google-sheets

1 ответ

2
Лучший ответ

Я бы, вероятно, изменил это: else if (e.value.hasOwnProperty("oldValue")) к этому else if (e.oldvalue)

  • 0
    не работает, как ожидалось, когда я пытаюсь этот метод. При добавлении нового значения ключ имеет oldValue в строке. Так что, если нет ничего в значении, то условие другое
  • 0
    Ты на самом деле спас меня. это была проблема. изменил его на e.oldValue && e.value для else if, теперь это работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню