对于没有名字的所有电子邮件条目,请替换为' Gamer'

时间:2018-01-22 16:20:03

标签: google-sheets google-spreadsheet-api

我为我的游戏社会管理了一个大型电子邮件列表。在A栏中,我有电子邮件,在B栏中,我有用户名。我用一个公式填充B列,该公式从他们的电子邮件地址中提取用户名,该地址通常是firstname.lastname@email.com表单。因此B列返回"名字"如果用户的电子邮件是firstname.lastname@email.com格式,则在运行公式后。

然而,有时候,电子邮件只有第一个名字的首字母(f.lastname@email.com),在这种情况下,我希望B列返回“游戏者”字样。而不是,例如,用户的电子邮件的第一个字母。

这是我目前使用的脚本,当前删除所有包含四个或更多数字的行:

    function removeNumbers() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var rowsDeleted = 0;
  for (var i = 0; i <= numRows - 1; i++) {

var row = values[i];

if (row[0].toLowerCase().indexOf("robot") > -1) {
  sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
  rowsDeleted++;
}

1 个答案:

答案 0 :(得分:1)

在共享电子表格中,使用此

function firstName() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var lr=sheet.getLastRow()
  var val = sheet.getRange(2,1,lr-1,2).getValues();//get the col A email addrs
  var newVal=[]//new array for before fitst period
  for (var i = 0; i <= val.length-1; i++) {
    var str=val[i][0].split(".")//split email at period
    var len=str[0].length // determine lenght of number string of first split
  if(val[i][1]=="inactive"){
    newVal.push(["inactive"])
    continue
  }
  if(len<=1){//if 1 or less
    def="Gamer"
    newVal.push([def]) //put Gamer in new array
  }
  else{
   newVal.push([toTitleCase(str[0])]) //keep first name
}}
  sheet.getRange(2, 2, newVal.length, 1).setValues(newVal)//set new values in col B
 }
function toTitleCase(str) {
    return str.replace(/\w\S*/g, function (txt) {
        return txt.charAt(0)
            .toUpperCase() + txt.substr(1)
            .toLowerCase();
    });
}

这也很好地在活动表上运行。