0

I'm trying to put together firstname + lastname into an email address, and it works, but I need to replace special characters in firstname and lastname or in the finished variable emailad:

function CreateEmailAddress(){

 var ss = SpreadsheetApp.getActiveSpreadsheet(),
     sheet = ss.getActiveSheet(),
     range = sheet.getDataRange(),
     values = range.getValues();
  for (var r=1; r<values.length; r++) {
   var row = values[r],
       firstname = row[0],
       lastname = row[1],
       email = row[2];

       if(email != "nodata" ){

       var emailad = (firstname + "." + lastname + "@superenterprisecompany.com");

      Logger.log(emailad);

    sheet.getRange(1 + r, 3).setValue(emailad);

    }

  }
}

I found this, but do not know how to get it to work with my variables

function convert_accented_characters(str){
    var conversions = new Object();
    conversions['ae'] = 'ä|æ|ǽ';
    conversions['oe'] = 'ö|œ';
    conversions['ue'] = 'ü';
    conversions['Ae'] = 'Ä';
    conversions['Ue'] = 'Ü';
    conversions['Oe'] = 'Ö';
    conversions['A'] = 'À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ';
    conversions['a'] = 'à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª';
    conversions['C'] = 'Ç|Ć|Ĉ|Ċ|Č';
    conversions['c'] = 'ç|ć|ĉ|ċ|č';
    conversions['D'] = 'Ð|Ď|Đ';
    conversions['d'] = 'ð|ď|đ';
    conversions['E'] = 'È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě';
    conversions['e'] = 'è|é|ê|ë|ē|ĕ|ė|ę|ě';
    conversions['G'] = 'Ĝ|Ğ|Ġ|Ģ';
    conversions['g'] = 'ĝ|ğ|ġ|ģ';
    conversions['H'] = 'Ĥ|Ħ';
    conversions['h'] = 'ĥ|ħ';
    conversions['I'] = 'Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ';
    conversions['i'] = 'ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı';
    conversions['J'] = 'Ĵ';
    conversions['j'] = 'ĵ';
    conversions['K'] = 'Ķ';
    conversions['k'] = 'ķ';
    conversions['L'] = 'Ĺ|Ļ|Ľ|Ŀ|Ł';
    conversions['l'] = 'ĺ|ļ|ľ|ŀ|ł';
    conversions['N'] = 'Ñ|Ń|Ņ|Ň';
    conversions['n'] = 'ñ|ń|ņ|ň|ʼn';
    conversions['O'] = 'Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ';
    conversions['o'] = 'ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º';
    conversions['R'] = 'Ŕ|Ŗ|Ř';
    conversions['r'] = 'ŕ|ŗ|ř';
    conversions['S'] = 'Ś|Ŝ|Ş|Š';
    conversions['s'] = 'ś|ŝ|ş|š|ſ';
    conversions['T'] = 'Ţ|Ť|Ŧ';
    conversions['t'] = 'ţ|ť|ŧ';
    conversions['U'] = 'Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ';
    conversions['u'] = 'ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ';
    conversions['Y'] = 'Ý|Ÿ|Ŷ';
    conversions['y'] = 'ý|ÿ|ŷ';
    conversions['W'] = 'Ŵ';
    conversions['w'] = 'ŵ';
    conversions['Z'] = 'Ź|Ż|Ž';
    conversions['z'] = 'ź|ż|ž';
    conversions['AE'] = 'Æ|Ǽ';
    conversions['ss'] = 'ß';
    conversions['IJ'] = 'IJ';
    conversions['ij'] = 'ij';
    conversions['OE'] = 'Œ';
    conversions['f'] = 'ƒ';

    for(var i in conversions){
        var re = new RegExp(conversions[i],"g");
        str = str.replace(re,i);
    }

    return str;
}
1
  • note that there are a few inconsistencies in the code above, some accented characters return 2 values... ö returns oe and o... only one will work. I suggest you clean it up to your taste. Commented Nov 11, 2014 at 16:44

3 Answers 3

2

You can use this function you found like this :

function testReplaceAccents() {
  Logger.log(convert_accented_characters("Jean-Noël Esèvéçà"));  
}

result :

enter image description here

so, in your code :

function CreateEmailAddress(){
  var ss = SpreadsheetApp.getActiveSpreadsheet(),
      sheet = ss.getActiveSheet(),
      range = sheet.getDataRange(),
      values = range.getValues();
  for (var r=1; r<values.length; r++) {
    var row = values[r],
        firstname = row[0],
        lastname = row[1],
        email = row[2];
    if(email != "nodata" ){
      var emailad = (firstname + "." + lastname + "@superenterprisecompany.com");
      Logger.log(convert_accented_characters(emailad));
      sheet.getRange(1 + r, 3).setValue(convert_accented_characters(emailad)); 
    }
  }
}
Sign up to request clarification or add additional context in comments.

Comments

1

Can you try just this one. I think it should work. Please let me know. If not then you have to change convert_accented_characters function.

var emailad = (convert_accented_characters(firstname) + "." + convert_accented_characters(lastname) + "@superenterprisecompany.com")

3 Comments

It did work : ), but im trying to replace spaces with "-" without luck, you know how to fix that? I tried the following but it did not work: conversions['-'] = '';
Can you give me an example? You mean like Firstname="shah ga". you want it shah-ga
@John : function convert_accented_characters(str){ var conversions = new Object(); conversions['-'] = ' ';// add this
0

You could try using regular expressions to remove special characters.

For example:

var firstName = "test'name &&^^%%%#s";
var newFirstName=str.replace(/[^a-zA-Z]/g, "");

1 Comment

this will remove all special characters, not replace them with unaccented ones.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.