July 30

Передача данных из Keitaro в Google таблицы


Настраиваем автоматическую передачу данных из Keitaro в Google Spreadsheets (Excel) при помощи простого скрипта на Javascript и автоматизируем финансовый учет.

Содержание

1. Установка и настройка скрипта для передачи из Keitaro в Google таблицы1.1. Триггеры выполнения

1.2. Результаты вывода в таблицу

2. Возможные ошибки и способы их устранения2.1. Ошибка №1. Кнопка «Выполнить» в Apps Script неактивна

2.2. Ошибка №2. This script has too many triggers. Triggers must be deleted from the script before more can be added

2.3. Ошибка №3. DNS error

2.4. Ошибка №4. Request failed, 401 ошибка

3. Как посмотреть, какие данные попадут в таблицу

4. Как использовать скрипт, для выгрузки данных по офферам или иным параметрам


🔥 Наш Telegram канал, обязательно подпишись! https://t.me/cparip/


Кому подходит: медиа байерам, кому удобнее собрать данные в Google таблицам, командам, которые работают с трекером Keitaro, а байеры вносят доходы и расходы в таблицы.

💰 Промокод для Keitaro на скидку 22% – CPARIP 💰

Что делает скрипт: 2 раза в сутки обновляет таблицу и передает доходы по группам компаний из Keitaro в Google таблицы. Периодичность можно настроить.

Что на выходе: таблица в Google Spreadsheets, где будут 3 столбца. Это:

  • группа кампаний в Keitaro — campaign_group;
  • день (дата) — day;
  • доход за дату — sale_revenue.

Что нужно для работы скрипта:

Установка и настройка скрипта для передачи из Keitaro в Google таблицы

Создать пустую таблицу в Google Spreadsheets, нажать на лист в нижней части и переименовать в Keitaro. Название важно! Если собираетесь использовать другие наименования для листов, вносить изменения в код скрипта: строка let sheet = ss.getSheetByName('Keitaro').

Выбрать вкладку «Расширения» (Extenstions) и нажать Apps Script.

Откроется новая страница, где находится редактор скриптов. В это поле необходимо скопировать скрипт с GitHub разработчика или отсюда:

function getKeitaroData() {

let ss = SpreadsheetApp.getActiveSpreadsheet();

let sheet = ss.getSheetByName('Keitaro');

let apiKey = '<YOUR_KEITARO_API_KEY>';

let url = 'http://<YOUR_TRACKER_DOMAIN>/admin_api/v1/report/build';

let options= {

"method":"POST",

"headers":{

"API-KEY": apiKey

},

"payload":'{"range":{"interval":"first_day_of_this_month","timezone":"Europe/Moscow","from":null,"to":null},"columns":[],"metrics":["sale_revenue"],"grouping":["campaign_group","day"],"sort":[{"name":"campaign_group","order":"asc"},{"name":"day","order":"asc"}], "filters":[{"name":"campaign_group_id","operator":"NOT_EQUAL","expression":""}],"summary":false,"limit":1000,"offset":0}'

}

let response = UrlFetchApp.fetch(url, options);

let json = response.getContentText(); // get the response content as text

let data = JSON.parse(json); //parse text into json

//Logger.log(data); //log data to logger

let stats=[]; //create empty array to hold data points

for (var i=0;i < data.rows.length; i++){

let r=data.rows[i];

stats.push([r.campaign_group,r.day,Number(r.sale_revenue)]);

}

//Logger.log(stats);

//append the stats array to the active sheet

sheet.clear();

sheet.getRange(sheet.getLastRow() + 1, 1,stats.length, stats[0].length).setValues(stats);

}

// Trigger 2 times a day

function createTimeDrivenTriggers() {

ScriptApp.newTrigger('getKeitaroData').timeBased().atHour(12).nearMinute(30).everyDays(1).create();

ScriptApp.newTrigger('getKeitaroData').timeBased().atHour(23).nearMinute(30).everyDays(1).create();

}

В коде надо заменить API-ключ <YOUR_KEITARO_API_KEY> и домен <YOUR_TRACKER_DOMAIN> на ваши данные.

API-ключ создается в Keitaro в admin → Профиль → API-ключи → Создать новый ключ.

Чтобы запустить скрипт, необходимо нажать Выполнить (Run). При этом правее должна быть выбрана функция “getKeitaroData”:

Если кнопка Выполнить неактивная (серого цвета), нужно нажать на значок сохранения 💾 и после нажать, на ставшую активной, кнопку Выполнить.

Появится сообщение о том, что проект требует разрешения на доступ к вашим данным. Надо авторизоваться и выдать запрашиваемые разрешения. При этом на адрес электронной почты придут автоматические уведомления безопасности.

Скрипт будет выполнен.

Триггеры выполнения

Следующим шагом надо еще раз выполнить скрипт, выбрав функцию “createTimeDrivenTriggers”.

Это создаст 2 триггера, которые можно посмотреть в левом меню “Триггеры”:

Обратите внимание: каждый раз при нажатии «Выполнить» создаются новые триггеры, поэтому не стоит кликать на кнопку несколько раз. Создание большого количества триггеров приведет к ошибке, решение которой разберем ниже.

Что такое триггер в таблицах Google и как он работает? Триггер (Trigger) позволяет сценарию приложений автоматически запускать функцию при возникновении определенного события. Подробнее в документации Google.

В нашем примере объявленная функция запускается по таймеру (createTimeDrivenTriggers()) 2 раза в сутки:

Когда наступает время, запускается function getKeitaroData() с заданными настройками, которая дергает Keitaro и обновляет таблицу, добавляя туда новые значения.

Результаты вывода в таблицу

После успешного выполнения кода и создания триггеров переходим в таблицу Google Spreadsheets с ранее созданным листом “Keitaro” и видим, что она автозаполнилась необходимыми данными.

В таблице появляются:

  • название кампании (байера);
  • дата (формат настраивается);
  • число (1123, 598, 37).

В самой таблице Google Spreadsheets стоит указать настройки столбцов:

  • для В — дата;
  • для С — число.

Чтобы выставить нужный формат ячейки (отображение числа и даты), необходимо выбирать Формат → Числа и далее нужный формат.

Возможные ошибки и способы их устранения

Скрипт проверен и работает. Если есть проблемы, скорее всего, стоит уточнить настройки.

Ошибки будут отображаться в “Журнале выполнения”:

Разберем основные моменты, с которыми может столкнуться пользователь.

Ошибка №1. Кнопка «Выполнить» в Apps Script неактивна

Как выглядит: невозможно запустить скрипт, т.к. Выполнить (Run) серая.

Как устранить: чтобы устранить проблему, необходимо нажать на значок сохранения (дискета) рядом с Выполнить. После сохранения кнопка Run будет активна.

Ошибка №2. This script has too many triggers. Triggers must be deleted from the script before more can be added

Как выглядит: в консоли красное уведомление с exception и строкой кода, где находится ошибка.

В чем причина: создали слишком много триггеров.

Как пофиксить: Не создавайте лишние триггеры, а если создали удалите их.

Чтобы устранить ошибку, необходимо перейти во вкладку «Триггеры».

Если там много триггеров, необходимо нажать на настройки и выбрать «Удалить триггер».

Появится сообщение: «Удалить этот триггер? В результате связанный с ним проект “Название проекта” может работать неправильно». Подтверждаем действие кликом на Удалить навсегда.

Ошибка №3. DNS error

Как выглядит: надпись DNS error в консоли.

Почему возникает: данный exception появляется в проекте Apps Script из-за ошибки в url.

Как пофиксить ошибку скрипта: проверьте, правильно ли скопировали данные в let url = 'http://<YOUR_TRACKER_DOMAIN>/admin_api/v1/report/build'.

Ошибка №4. Request failed, 401 ошибка

Как выглядит: в Apps Script выкидывает Exception: Request failed for “САЙТ” returned code 401. Truncated server response: {“error”:”Unauthorized”} (use muteHttpExceptions option to examine full response).

Как пофиксить: код 401 показывает ошибку доступа. Проверьте правильность введенного ключа в apiKey.

Как посмотреть, какие данные попадут в таблицу

Предварительно информацию можно вывести в консоль. Для этого в код добавляем строку:

console.log(data)

Console.log ставим после объявления data (строчка let data = JSON.parse(json); //parse text into json).

После начала выполнения скрипта появляется data.

Как использовать скрипт, для выгрузки данных по офферам или иным параметрам

Для тех кто умеет кодить есть возможность доработать скрипт передачи данных из Keitaro в Google таблицы для работы с другими данными под конкретные задачи: например сегментация, фильтры и т.д.

Параметры для передачи находим следующим образом:

Идем в «Отчеты Keitaro», где выводятся нужные нам данные, и запускаем “Инструменты разработчика” в браузере. В Google Chrome для этого нажмите на три точки в правом верхнем углу → Дополнительные инструменты → Инструменты разработчика.

Нас интересует вкладка «Network» и в нем «Payload» (Request). Внутри запроса содержатся нужные параметры:

Найденные параметры дальше использовать для доработки скрипта: