snh_nl
snh_nl

Reputation: 2965

Google spreadsheets custom function code not working: =RootDomain

Hi I am trying to program a Google spreadsheets custom function. It receives a range and spits out the clean rootdomain. I just ran into an "too many executions" - I have to run this on my whole sheet. So I added a range.

Now the feedback is "internal error function" ....

Help appreciated .... this must be possible!

/**
 * Generates clean root domains
 *
 * @param {input} input The value to change to a root domain.
 * @return The clean root domain.
 * @RootDomain
 */
function RootDomain(input) {
  if (input == null) return '';
  if (input.map) {            // Test whether input is an array.
    return input.map(RootDomain); // Recurse over array if so.
  } else {
    if (input = '') return '';
    regex = new RegExp(/((www)\.)?.*(\w+)\.([\w\.]{2,6})/);
    return regex.exec(input)[0].replace(/^http(s)?:\/\//i, "").replace(/^www\./i, "").replace(/\/.*$/, "");
  }
}

Upvotes: 1

Views: 277

Answers (1)

Akshin Jalilov
Akshin Jalilov

Reputation: 1716

Do this instead:

function RootDomain(input) {
  if (input == null || input === '') { 
  return '';
  } else if (input.map) {            // Test whether input is an array.
  return input.map(RootDomain); // Recurse over array if so.
  }
    var regex = new RegExp(/((www)\.)?.*(\w+)\.([\w\.]{2,6})/);
    return regex.exec(input)[0].replace(/^http(s)?:\/\//i, "").replace(/^www\./i, "").replace(/\/.*$/, "");
  }

Upvotes: 1

Related Questions