Created
December 12, 2016 01:08
-
-
Save bencooper222/8191f7a7ab33c0861fb2e15cbfe3d35c to your computer and use it in GitHub Desktop.
Easy Google Apps Script Secret Santa code given a spreadsheet with names in the B column and emails in the C column
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var ss = SpreadsheetApp.getActiveSpreadsheet(); // this is meant to run inline google appsscript - you'll have to use a different get method if you don't want that | |
var sheet = ss.getSheets()[0]; // assumes sheet 1 | |
var names = sheet.getRange(2,2,sheet.getLastRow()-1,2).getValues(); | |
Logger.log(names); | |
if (names.length % 2 != 0) { | |
//alert("You must have an even number of names. You currently have " + names.length + " names."); | |
} else { | |
var arr1 = names.slice(), // copy array | |
arr2 = names.slice(); // copy array again | |
arr1.sort(function() { return 0.5 - Math.random();}); // shuffle arrays | |
arr2.sort(function() { return 0.5 - Math.random();}); | |
while (arr1.length) { | |
var name1 = arr1.pop(), // get the last value of arr1 | |
name2 = arr2[0] == name1 ? arr2.pop() : arr2.shift(); | |
// ^^ if the first value is the same as name1, | |
// get the last value, otherwise get the first | |
// Logger.log(name1[1] + ' gets ' + name2[1]); | |
var message = "This is an autogenerated email. Your Secret Santa match is: " + name2[0] + ". You can see their address/wish list here: <include link to spreadsheet>"; | |
GmailApp.sendEmail(name1[1], "Secret Santa", message); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment