【问题标题】:Calling function inside If..If Else..Else inside google-app scriptIf..If Else..Else 在 google-app 脚本中调用函数
【发布时间】:2017-08-01 15:26:37
【问题描述】:

我正在处理 Google 电子表格中的一个项目,并且正在使用一个脚本来触发工作表上的活动,例如编辑/删除/换行等。这些活动通过 Measurements Protocol 发送到 Google Analytics。

现在我有一个 If...Else if...Else 确定这是一个编辑、新行或已删除的现有值。

这是我的代码:
// 回答后更新代码,但仍然无法正常工作。

    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 语句中调用函数,还是我的代码错误?

【问题讨论】:

  • 您不应使用Browser.msgBox() 进行调试。使用Logger.log('variableName: ' + variableName) 运行代码,然后查看日志。另外,执行记录说明了什么?哪行代码失败。我们不想知道行号。我们不知道您的代码的行号。

标签: javascript if-statement google-apps-script google-analytics google-sheets


【解决方案1】:

我可能会将这个:else if (e.value.hasOwnProperty("oldValue")) 改成这个 else if (e.oldvalue)

【讨论】:

  • 尝试此方法时无法按预期工作。添加新值时,键在字符串中有 oldValue。因此,如果没有任何值,则条件为 else
  • 你真的救了我。这就是问题所在。将其更改为 e.oldValue && e.value on else if 语句现在可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多