Skip to content

Instantly share code, notes, and snippets.

View walkergv's full-sized avatar

Glenn Walker walkergv

View GitHub Profile
@walkergv
walkergv / Category to Sheet
Last active July 5, 2023 21:40
A VBA Excel Macro that processes an Excel Table with a category column (must be first column) and applies several sorts, filters and styling. Also it creates a linked table of contents of worksheets in the excel workbook.
Sub CategoryToSheet()
Dim rng As Range
Dim Category As Range
Dim List As New Collection
Dim Item As Variant
Dim i As Integer
Dim rngLinkCell As Range
Dim strSubAddress As String
Dim strDisplayText As String
'
@walkergv
walkergv / createdocfromsheet.appscript.js
Created January 29, 2015 05:38
Create and Format a Google Doc from Google Sheet
function createDoc() {
//
// Get The Current Spreadsheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
//
// Get data in spreadsheet
var range = sheet.getDataRange();
var rowsData = range.getValues();
//
@walkergv
walkergv / gtm.tampermonkey.js
Last active February 21, 2023 07:55
Adding GTM (Google Tag Manager) Container Code using Tampermonkey
// ==UserScript==
//@name Name of your script
//@namespace http://use.i.E.your.homepage/
//@version 0.1
//@description Inject GTM bootstrap on my website
//@include http://www.domain.com/* [wildcard url where GTM should inject the code]
// ==/UserScript==
// Google Tag Manager
setTimeout("(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':"+
@walkergv
walkergv / elementor.gtm,.js
Created September 20, 2022 20:34
Data Layer Push for GTM Customer Event with Elementor
// Always endure you have given each form a Form ID in the Elementor backend or else action will not track.
jQuery( document ).ready(function( $ ){
jQuery( document ).on('submit_success', function(event) {
// for example, to submit a custom event to GTM DataLayer
//dataLayer.push({event:"GAEvent",eventCategory:"Form Submission", eventAction:event.target.id ,eventLabel:undefined});
});
});
@walkergv
walkergv / php-UA.php
Last active May 20, 2022 09:04
Simple Event Tracking with Measurement Protocol Using cURL and PHP (plus redirect)
<?
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://www.google-analytics.com/collect?v=1&tid=[UA-XXXXXXXXX-1]&cid=[RANDOM_INTEGER_OR_GUID]&t=event&ec=[EVENT_CATEGORY]&ea=[EVENT_ACTION]&el=[EVENT_LABEL]',
CURLOPT_USERAGENT => 'Vanity-URL-Tracker',
));
$resp = curl_exec($curl);
curl_close($curl);
header("HTTP/1.1 301 Moved Permanently");
@walkergv
walkergv / financial-data.csv
Created May 3, 2022 03:11
Sample Financial Data
We can make this file beautiful and searchable if this error is corrected: Unclosed quoted field in line 7.
Segment,Country, Product , Discount Band ,Units Sold, Manufacturing Price , Sale Price , Gross Sales , Discounts , Sales , COGS , Profit ,Date,Month Number, Month Name ,Year
Government,Canada, Carretera , None ,1618.5, $3.00 , $20.00 ," $32,370.00 ", $- ," $32,370.00 "," $16,185.00 "," $16,185.00 ",2014-01-01,1, January ,2014
Government,Germany, Carretera , None ,1321, $3.00 , $20.00 ," $26,420.00 ", $- ," $26,420.00 "," $13,210.00 "," $13,210.00 ",2014-01-01,1, January ,2014
Midmarket,France, Carretera , None ,2178, $3.00 , $15.00 ," $32,670.00 ", $- ," $32,670.00 "," $21,780.00 "," $10,890.00 ",2014-06-01,6, June ,2014
Midmarket,Germany, Carretera , None ,888, $3.00 , $15.00 ," $13,320.00 ", $- ," $13,320.00 "," $8,880.00 "," $4,440.00 ",2014-06-01,6, June ,2014
Midmarket,Mexico, Carretera , None ,2470, $3.00 , $15.00 ," $37,050.00 ", $- ," $37,050.00 "," $24,700.00 "," $12,350.00 ",2014-06-01,6, June ,2014
Government,Germany, Carretera , None ,1513, $3.00 , $350.00 ," $529,550.00 ", $- ," $529
@walkergv
walkergv / eventTracker.js
Created April 27, 2016 22:03
Unbounce Event Tracker Script
<script type='text/javascript'>
(function() {
var EventTracker, lpScriptVersion;
lpScriptVersion = "1.2.0";
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments)
@walkergv
walkergv / faq.schema.org.json.html
Last active January 30, 2020 08:11
Frequently Asked Questions (FAQ) Pages Schema.org JSON-LD format
<!--When a JSON-LD document's top-level structure is an object that contains no other
properties than @graph and optionally @context (properties that are not mapped to an IRI
or a keyword are ignored), @graph is considered to express the otherwise implicit default graph.
This mechanism can be useful when a number of nodes exist at the document's top level that
share the same context, which is, e.g., the case when a document is flattened. The @graph
keyword collects such nodes in an array and allows the use of a shared context.
From https://www.w3.org/TR/json-ld/#h3_named-graphs
More on graph - http://stackoverflow.com/questions/30505796/json-ld-schema-org-multiple-video-image-page/30506476#30506476
@walkergv
walkergv / pulautin.gs
Created December 17, 2019 16:26 — forked from k0sti/pulautin.gs
Yle Skenaariopeli - Korttipulautin
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Korttipulautin')
.addItem('Luo Ilmiökortit', 'createScenarioCards')
.addItem('Luo Linssikortit', 'createLensCards')
.addToUi();
}
function getNamedRange(name) {
var sheet = SpreadsheetApp.getActive();
@walkergv
walkergv / slidesAppSctipt.js
Created December 17, 2019 16:24
Playing around with Google Slides App Script
function myFunction() {
var currentPresentation = SlidesApp.getActivePresentation();
var obj = currentPresentation.getSlides();
var Master = currentPresentation.getMasters();
var Layouts = Master[1].getLayouts();
for (var i = 0; i < Layouts.length; i++){
Logger.log("Layout = " + Layouts[i].getLayoutName());
var Elements = Layouts[i].getPageElements()
for (var j = 0; j < Elements.length; i++){