我为我的游戏社会管理了一个大型电子邮件列表。在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++;
}
答案 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();
});
}
这也很好地在活动表上运行。