Сделайте запрос API в Google Analytics из Google Таблиц с помощью скрипта Google Apps

#javascript #google-apps-script #google-sheets #google-analytics

Вопрос:

У меня есть рабочий процесс, который добавляет новую строку в таблицу Google каждый раз, когда свойство жизненного цикла изменяется в CRM.

Выходные данные включают идентификатор Google CID, личность, идентификатор клиента Hubspot и новый жизненный цикл в лист Google.

Это выглядит так — CRM 2 Google Analytics Google Лист

Существует таблица настроек, которая управляет идентификатором отслеживания Google analytics и пользовательским индексом измерений для измерений, которые я пытаюсь отправить.

Это скрипт Google Apps, который я использую

   function sendToGoogleAnalytics() {
 
 //  select the data
 
 var spreadSheet = SpreadsheetApp.openById('16Bn6Q9C0mBNy6ic1UO-30cWX5YXTeWkpyrbIt7SO1nw');
 var sheet = spreadSheet.getSheetByName('Lifecycle');
 sheet.activate();
 
 var setting = spreadSheet.getSheetByName('Settings');
 
 // getting settings
 
 var ua = setting.getRange(2,2).getValue();
 var hidcdi = 'cd' setting.getRange(3,2).getValue();
 var lifecyclecdi = 'cd' setting.getRange(4,2).getValue();
 var personcdi = 'cd' setting.getRange(5,2).getValue();
 
 
 //getting values of the last row
 var newData = sheet.getLastRow();
 var gcid = sheet.getRange(newData,1).getValue();
 var persona = sheet.getRange(newData,2).getValue();
 var hubid = sheet.getRange(newData,3).getValue();
 var lifecyclestage = sheet.getRange(newData,4).getValue();

//cache busting

var z = Math.random()*(1000000-1000) 1000;
 
//preparing the api call with options and the query parameters
var event ='amp;ec=Lifecycleamp;ea=Changeamp;el=' lifecyclestage;
var parameters = 'v=1amp;tid=' ua 'amp;t=eventamp;' 'amp;cid=' gcid 'amp;' hidcdi '=' hubid 'amp;' lifecyclecdi '=' lifecyclestage 'amp;' personcdi '=' persona event 'amp;ni=1amp;aip=1' 'amp;z=' z;

    

 var options = {
    'method': 'post',
     'payload': parameters
   };
//    
  
  
    var response = UrlFetchApp.fetch('https://www.google-analytics.com/collect',options);
    
    var responsecode = response.getResponseCode();
    if (responsecode >= 200 amp;amp; responsecode < 300) {
     UrlFetchApp.fetch('https://www.google-analytics.com/collect',options);
     Logger.log(responsecode);
      Logger.log(response);
     return response;
     } else {   
    Logger.log(responsecode);
    Logger.log(response);
    return response;
 }
  }
 

Как вы можете видеть, я также хочу добавить его как событие, не связанное с взаимодействием.

Это возвращает последнюю строку, присваивает значения этих значений переменным, а затем создает переменные. Он отправляет с помощью метода post, который является предпочтительным. Все это основано на справочном руководстве по параметрам протокола измерений Google Analytics и отправке результатов измерений в Google Analytics.

Код ответа, который я получаю, равен 200, а ответ-какой-то GIF89a с некоторыми полями, которые я не могу прочитать

Ответ в журнале сценариев Google Apps

Я проверил отладчик, и все переменные заполняются правильно. И идентификатор кода отслеживания правильный (тот, что в этом документе, является примером, но я пробую его на реальном).

Однако я не вижу, чтобы это событие появилось в самой Google Analytics.

Я пробовал это как ПОЛУЧИТЬ и как СООБЩЕНИЕ, и я получаю один и тот же ответ, но он не отображается в Google Analytics.

Что я здесь делаю не так?

Ответ №1:

В конце концов, я не смог заставить это работать напрямую. Поэтому мне пришлось добавить еще один шаг. Я полагаю, что это было как-то связано с тем, что пользовательский агент не был должным образом записан, и я не мог этого сделать. Что я сделал, так это отправил его на сервер Google Tag Manager, а затем отправил оттуда. Когда я попробовал это, это сработало.