Советы по GTM

Использование DOM элементов (document ready)

Если вы в своём коде собираетесь обращаться к элементам которые находятся на страницы (кнопки, формы, поля и пр.), то свой код нужно оборачивать в такую конструкцию:

$(document).on('ready', function(){
    тут_вставьте_ваш_код
});

Это даст гарантию того, что ваш код не сработает раньше, чем загрузятся элементы DOM (т.е. страница).

 

Сохранность кода (замыкание)

При интеграции кода GTM в глобавльную обрасть видимости попадают все ваши объявленные переменные, что может повлечь перезатирания переменных, которые используются на сайте. Для экранирования вашего кода стоит использывать замыкания. (https://developer.mozilla.org/ru/docs/Web/JavaScript/Closures)

(function(){
    тут_вставьте_ваш_код
})();

Узнать текущую и предшествующиую страницуwindow.location + document.referer

  • Чтобы узнать с какой страницы пришел пользователь стоит использовать глобальную переменную document.referrer
  • Для того, чтобы узнать на какой странице сейчас находится пользователь стоит использовать переменную window.location (http://javascript.ru/window-location):

<tbody> </tbody>

Свойство Описание Пример
hash часть URL, которая идет после символа решетки ‘#’, включая символ ‘#’ #test
host хост и порт www.google.com:80
href весь URL http://www.google.com:80/search?q=javascript#test
hostname хост (без порта) www.google.com
pathname  строка пути (относительно хоста) /search
port номер порта 80
protocol протокол http:
search часть адреса после символа ?, включая символ ? ?q=javascript

Пример:

dataLayer.push({'event': 'GAevent', 'eventCategory': 'категория', 'eventAction': 'действие', 'eventLabel': window.location.href});

Проверять есть ли jQuery на странице

Иногда разработчики сайтов не используют jQuery, поэтому стоит проверить загружен ли он на странице.
Для этого зайдите в консоль и в строке ввода вставьте jQuery. Если вывелось Uncaught ReferenceError: jQuery is not defined(…), то значит jQuery не подключен на странице и стоит его подключить или попросить разработчиков.

Если же jQuery подключен, но ваш код срабатывает раньше чем он загружается, то можно использовать функцию window.onload:

window.onload = function() {
    тут_вставьте_ваш_код
}

Конспект Программирование на Python

Операции с целыми числами

// — целочисленное деление,т.е. получаем whole number

/ — получаем  decimal number

% — что остается в остатке, т.е 42%2=2

** — возведение в степень

Типы данных

целые числа — int

вещественные(с плавающие запятой) — float

логические — bool

строки — str

Переменные

Задать переменную просто: a = 5

Ввод данных

input(“Введите данные”)

Пример проги:

a = int(input())

X = int(input())

Y = int(input())

print(X*60 + Y)

Условия

if x % 2 == 0:

print(‘Четное’)

else:

print(‘Нечетное’)

Циклы

цикл while

a = 5

while a >0:

print(a, end=’’)

a -= 1

Вывод: 5 4 3 2 1

цикл for

for i in 2,3,5

print(i*i)

4

9

6

Строки

genome = ‘ATGG’

genome[0]    получим символ A

Списки

Структура данных в питоне

students = [‘ivan’,’masha’,’sasha’]

for student in students:

print (‘Hello, ’+student+’!’) — выводит приветствие для каждого

student.sort() — сортируем список методом sort

a = [0 for i in range(5)] — генерация списков

Можно задавать двумерные списки

Функции

Объявляем функцию через def

def min2(a,b):

if a<=b:

return a

else:

return b

Можно так: m = min2(min2(42,30),25) — минимум из чисел

Множества

s = set()

Множества отличаются от списков, что хранят только уникальные значения

Словари

Словарь хранит множества пар ключ-значение

d = {‘a’’:239, 10:1000} — создание словаря

print(d[‘a’]) — получение значения

Чтение из файла

Программа чтения из файла первой строки

inf = open (‘file.txt’,”r”)

s1 = inf.readline()

inf.close()

Модули

Функции выделенные в отдельный файл

import my_module

my_module.foo()

Конспект курса Stepic Web Технологии

Internet — глобальная сеть передачи данных, изначально создавалась для научного сообщества.

Протоколы:

HTTP — основной протокол передачи данных. Служит для передачи гипертекстовых страничек.

Из чего состоит URL:

1

Т.е. по сути, адрес сайта можно указать чистым ip адресом.

Web клиенты

Основной веб клиент — браузер.

2016-10-09_14h14_13

*Доп. ресурсы — это, например, скрипты или стили css.

Атрибуты форм GET и POST

GET — получаем данные. Например это будет форма поисковой строки на сайте.

POST — отправляем данные. Например это форма контактов.

Сетевые протоколы

2

Более подробно и в фановом виде — https://howdns.works/ep1/

Архитектура Фронтенд и Бэкенд

2016-10-09_14h24_32

 

 

 

Скрипт для генерации списков ремаркетинга в Google AdWords через GA

Статья

Инструкция:

  1. Включаем расширенное АПИ: https://developers.google.com/adwords/scripts/docs/features/advanced-apis?hl=ru
  2. Готовим нужный спридшит https://goo.gl/4ZAb7Z
  3. Редактируем скрипт и добавляем:
    function main() {
    
      var settings = {'linkedView':"XXXXXXXX",
                      'linkedAccountId':"XXX-XXX-XXXX",
                      'accountId':'XXXXXXX',
                      'propertyID':'UA-XXXXXXX-X'};
    
      var spreadsheet = SpreadsheetApp.openByUrl('https://goo.gl/4ZAb7Z');
      var sheet = spreadsheet.getSheetByName('Sheet1');
      var range = sheet.getRange(1, 2, sheet.getLastRow(), 3);
      var values = range.getValues();
      Logger.log(values.length);
    
      for(var i = 0; i < values.length; i++) {
        var name = values[i][0];
        var categoryUrl = values[i][1];
        var duration = values[i][2];
        var newAudience = Analytics.Management.RemarketingAudience.insert(
          {
            'name': name,
            'linkedViews': [settings.linkedView],
            'linkedAdAccounts': [{
                'type': 'ADWORDS_LINKS',
                'linkedAccountId': settings.linkedAccountId,
            }],
            'audienceType': 'SIMPLE',
            'audienceDefinition': {
              'includeConditions': {
                'daysToLookBack': 7,
                'segment': 'sessions::condition::ga:PagePath=@' + categoryUrl,
                'membershipDurationDays': duration,
                'isSmartList': false
              }
            }
          },
        settings.accountId,
        settings.propertyID);
    
       Logger.log(i + ' Аудитория ' + name + ' создана');
      };