Skip to content

Instantly share code, notes, and snippets.

View mbaersch's full-sized avatar

Markus Baersch mbaersch

View GitHub Profile
@mbaersch
mbaersch / getTextLength.js
Created August 13, 2018 15:11
Textlänge in GTM als Benutzerdefinierte JavaScript Variable erfassen
function() {
//statt #content für einen Hauptcontainer mit der Id "content" einen CSS Selektor des Hauptinhaltselements
//als Id oder (eindeutige) Klasse eintragen. Sonst zur Not einfach 'body' angeben...
var txt = document.querySelector('#content').textContent;
//Worte zählen
var lng = txt.split(" ").length;
//Auf je 500 Worte in Klassen bis maximal 5000 aufteilen, alles unter 251 kommt in die Klasse 250
lng = Math.max(250, Math.min(Math.round(lng/500)*500, 5000));
return lng + " Worte";
}
@mbaersch
mbaersch / adwords-script-product-reviews.js
Last active July 9, 2019 23:11
Dynamische Anzeige von Trusted Shops Produktbewertungen
/***********************************************************************/
/****** Dynamische Anzeige von Trusted Shops Produktbewertungen *******/
/***********************************************************************/
/* v1.2 2017 Markus Baersch (@mbaersch)
gandke marketing & software - www.gandke.de */
/******************************* Setup *******************************/
//Bezeichnung des Labels für Anzeigegruppen mit zu behandelnden Keywords angeben
var lblDynParams = "ApiRating";
@mbaersch
mbaersch / honeypot.js
Created July 25, 2019 18:12
Honeypot-URL in Menü hinzufügen
function addHpLi(callback){
if (document.readyState!='loading') callback();
else if (document.addEventListener) document.addEventListener('DOMContentLoaded', callback);
else document.attachEvent('onreadystatechange', function(){
if (document.readyState=='complete') callback();
});
}
addHpLi(function(){
//Hier den Selektor für das eigene Hauptmenu oder ein Untermenu angeben, damit dort ein Eintrag hinzugefügt werden kann.
@mbaersch
mbaersch / microconversion-impact.R
Last active November 19, 2019 09:42
Gewichtung von Mikrozielen für Engagement-Scoring in Analytics mit Random Forest in RStudio bestimmen
#-------------------------------------------------------------------------------------------------------
# Abhängigkeit zwischen Transaktionen / Makrozielen und Mikro-Zielerreichungen untersuchen
#-------------------------------------------------------------------------------------------------------
#VORBEREITUNG (einmalig): Installation der Pakete, wenn nicht bereits installiert
#Im Bedarfsfall hier das Kommentarzeichen "#" vor den beiden folgenden Zeilen entfernen und
#diese ebenfallsausführen
#install.packages("googleAnalyticsR")
#install.packages("h2o")
@mbaersch
mbaersch / callback-example.js
Last active July 16, 2020 14:16
Upgrade Your Analytics Cookies to fight ITP2.1:
/* GTM : use the following code inside a customTask, hitCallback oder a cleanup tag
GA.JS : modify your existing tracking code with a customTask or hitCallback and execute the following code
GTAG.JS : modify your existing tracking code with a manual page_view event
including an event_callback (gtag.js) and execute the following code
customTask ga.js - see: https://developers.google.com/analytics/devguides/collection/analyticsjs/tasks#adding_to_a_task
hitCallback ga.js - see: https://developers.google.com/analytics/devguides/collection/analyticsjs/sending-hits#hitcallback
event_callback gtag.js - see: https://developers.google.com/analytics/devguides/collection/gtagjs/sending-data#implement_event_callback_functions
*/
<?php
/* Pruefung einer VAT mittels nuSOAP (https://sourceforge.net/projects/nusoap/) statt SOAP
Version 1.0.0.1 vom 30.09.2016
M. Baersch, gandke marketing & software gmbh - www.gandke.de
*/
function isValidVat($nr) {
require_once('lib/nusoap.php');
$vatid = str_replace(array(' ', '.', '-', ',', ', '), '', trim($nr));
$cc = substr($vatid, 0, 2);
$vn = substr($vatid, 2);
//Alle APIs, die wir zum Lesen, Verarbeiten und Weitergeben brauchen, werden hier geladen
const claimRequest = require('claimRequest');
const returnResponse = require('returnResponse');
const getRequestQueryParameter = require('getRequestQueryParameter');
const runContainer = require('runContainer');
const setPixelResponse = require('setPixelResponse');
const getRequestHeader = require('getRequestHeader');
const getRequestPath = require('getRequestPath');
const getRemoteAddress = require('getRemoteAddress');
@mbaersch
mbaersch / Demo-Client.tpl
Created September 8, 2020 21:46
Serverside GTM Demo Client + Tag Template
___INFO___
{
"type": "CLIENT",
"id": "cvt_temp_public_id",
"version": 1,
"securityGroups": [],
"displayName": "Demo Logger",
"brand": {
"id": "brand_dummy",
@mbaersch
mbaersch / adwords-script-gurkenfinder.js
Last active October 20, 2020 08:36
Identifizieren von schlecht performenden Keywords und Produkten in AdWords
/**************************************************************/
/****** "Gurkenfinder"-Script für Google AdWords *******/
/**************************************************************/
/* v1.4 2020 Markus Baersch (@mbaersch)
Reduzierte Non-MCC-Fassung
gandke marketing & software - www.gandke.de */
/*********** Start Setup **********************/
var emailAddress = "mailadresse@hier.eintragen";
/* Variante: Nur speichern der ersten Quelle (als Cookie "gmsOrgSource"). Alle anderen Hinweise: Siehe oben */
function setSourceCookie(domain) {
function getParamValue(pname, url) {
pname = pname.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var rx = new RegExp("[\\?&]" + pname + "=([^&#]*)");
var results = rx.exec(url);
if (results == null) {
return "";