Skip to content

Instantly share code, notes, and snippets.

@mhawksey
mhawksey / UrlShortener.gs
Last active Apr 11, 2019
Google Apps Script shim to replace UrlShortener calls with a Bit.ly version
View UrlShortener.gs
// https://addyosmani.com/blog/essential-js-namespacing/
// extend.js
// written by andrew dupont, optimized by addy osmani
function extend(destination, source) {
var toString = Object.prototype.toString,
objTest = toString.call({});
for (var property in source) {
if (source[property] && objTest == toString.call(source[property])) {
destination[property] = destination[property] || {};
extend(destination[property], source[property]);
@mhawksey
mhawksey / snip_02.js
Created Mar 17, 2018
Code snippets for Recording .mp3 audio in Google Add-ons/Google Apps Script to Google Drive https://mashe.hawksey.info/?p=17916
View snip_02.js
blobToDataURL(blob, function(url){
var filename = 'recording_' +
(new Date()) +
'_.mp3';
google.script.run.withSuccessHandler(function(driveUrl){
$('ol.convertedList')
.append('<li><strong> ' + filename +
'</strong> <a href="'+driveUrl+'" target="_blank">Drive Link</a><br/>' +
'<audio controls src="' + url + '"></audio>' +
'</li>');
@mhawksey
mhawksey / snip01.js
Last active Mar 17, 2018
Code snippets for Recording .mp3 audio in Google Add-ons/Google Apps Script to Google Drive https://mashe.hawksey.info/?p=17916
View snip01.js
blobToDataURL(blob, function(url){
$('ol.convertedList')
.append('<li><strong> recording_' +
(new Date()) +
'_.mp3</strong><br/>' +
'<audio controls src="' + url + '"></audio>' +
'</li>');
})
@mhawksey
mhawksey / appsscriptzoneids.csv
Last active Nov 28, 2017
ZoneIds used in Google Apps Script
View appsscriptzoneids.csv
value text
Pacific/Midway (GMT-11:00) Midway
Pacific/Niue (GMT-11:00) Niue
Pacific/Pago_Pago (GMT-11:00) Pago Pago
Pacific/Honolulu (GMT-10:00) Hawaii Time
Pacific/Johnston (GMT-10:00) Johnston
Pacific/Rarotonga (GMT-10:00) Rarotonga
Pacific/Tahiti (GMT-10:00) Tahiti
Pacific/Marquesas (GMT-09:30) Marquesas
America/Anchorage (GMT-09:00) Alaska Time
@mhawksey
mhawksey / gist:0c5ad7b79e1162b239156ce946cbe2be
Created Nov 13, 2017
Snippet of code used for DevFest London 2017 to count faces in audience and send to Google Analytics and update image in Google Slides (see https://mashe.hawksey.info/?p=17787)
View gist:0c5ad7b79e1162b239156ce946cbe2be
import io
import picamera
import cv2
import numpy
import requests
import base64
def hitGA(faces):
print("Sending to GA")
requests.get("http://www.google-analytics.com/collect?v=1" \
@mhawksey
mhawksey / face-detection-to-google-analytics.py
Last active Nov 12, 2018
Snippet of code used for DevFest London 2017 to count faces in audience and send to Google Analytics (see https://mashe.hawksey.info/?p=17787)
View face-detection-to-google-analytics.py
import io
import picamera
import cv2
import numpy
def hitGA(faces):
print("Sending to GA")
requests.get("http://www.google-analytics.com/collect?v=1" \
+ "&tid=YOUR_UA_TRACKING_ID_HERE" \
+ "&cid=1111" \
View Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<a class="twitter-timeline" data-dnt="true" href="https://twitter.com/search?q=%23altc%20OR%20from%3AA_L_T" data-widget-id="398755222102605825">Tweets about #altc OR from:A_L_T</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</body>
</html>
View include-snippet
var icons = {};
icons['ic_refresh_white_24dp.png'] = { id: 'sync_now',
class: 'i18n spinning',
src: 'data:image/png;base64,...'
};
View include-snippet.gs
<div id="action-bar">
<?!= Include.img(icons['ic_refresh_white_24dp.png']); ?>
<?!= Include.img(icons['ic_settings_white_24dp.png']); ?>
</div>
@mhawksey
mhawksey / include-snippet.gs
Created Oct 23, 2017
Apps Script exerpt to include images in HTML Service
View include-snippet.gs
/**
* given an image object, it will generate an img tag
* @param {Object} imgData with image data
* @return {string} of img tag or src
*/
ns.img = function (imgData, isImgTag) {
if (!isImgTag){
var html = '<img ';
Object.entries(imgData).forEach(function(k){ html += k[0]+'="'+k[1]+'" '});
html += '>\n'
You can’t perform that action at this time.