function slugify(values) { /* * Convert the the vs in a range of cells into slugs. */ slugs = []; for (var row = 0; row < values.length; row++) { var bits = []; for (var column = 0; column < values[row].length; column++) { var value = values[row][column]; value = value.toLowerCase(); value = value.replace(/[^\w\s-]/g, ''); value = value.replace(/\s+/g, '-'); bits.push(value); } var base = bits.join('-'); var i = 1; var slug = base; while (slugs.indexOf(slug) >= 0) { i++; slug = base + '-' + i; } slugs.push(slug); } output = []; for (var s = 0; s < slugs.length; s++) { output.push([slugs[s]]); } return output; } function test() { /* * Test the slugify function. */ var TESTS = [ ['foo', 'baz bing'], ['bar', 'BAZ'], ['FOO', 'baz-bing'] ]; var RESULTS = [ 'foo-baz-bing', 'bar-baz', 'foo-baz-bing-2' ]; var output = slugify(TESTS); for (var t = 0; t < TESTS.length; t++) { var test = TESTS[t]; var result = RESULTS[t]; Logger.log("[" + test + "] == " + result); Logger.log((output[t][0] == result) + " ... " + output[t][0]); } }