我想删除Google表格上包含员工,测试,不相关的提交和重复条目的行。 我的代码必须独立,以便可以在我的工作场所中使用。
具体来说,我想:
删除所有包含属于某个组织的电子邮件地址的行(例如:以@ domainname.com结尾的任何电子邮件地址)。我一直在使用一段代码删除包含属于我的同事的三个特定电子邮件地址的行,但是我希望找到一种方法来一次删除所有员工,而无需在每个电子邮件中都进行编码。这是我一直在使用的代码:
function delVtlEm() {
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[1] == 'isaac@domainname.com' ||
row[1] == 'danni@domainname.com' ||
row[1] == 'georgia@domainname.com') {
sheet.deleteRow((parseInt(i) + 1) - rowsDeleted);
rowsDeleted++;
}
}
}
从注释部分删除所有包含“ login”一词的行,其中“ login”可能只是该列中副本的一部分。例如,某人可能会填写“联系我们”表单,并在评论部分询问有关其登录信息的帮助-但这并不是我的合格潜在客户。他们的信息可能是“嘿,您能帮我登录吗?”或其他类似的措词,这就是为什么我要删除任何容量的包含“登录”的行。
如果您有任何想法或建议的代码,请告诉我!
答案 0 :(得分:1)
我已经根据您的代码实现了以下smartDelete()
函数。
此功能可让您实现以下目标
badDomains
数组中)以删除其对应的行。badWords
数组中)以删除其对应的行。regExpModifiers
中)更改为""
或Null
来更改它。fnameColumnNumber
,emailColumnNumber
和companyColumnNumber
中)让我知道您是否遇到任何问题或有任何反馈。
function smartDelete() {
// smartDelete settings goes here,
var badDomains = ["vtldesign\\.com", "parterreflooring\\.com"];
var badWords = ["Vital", "Parterre", "test"];
var fnameColumnNumber = 0;
var emailColumnNumber = 1;
var companyColumnNumber = 3;
var regExpModifiers = "i";
// Gain access data in the sheet
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
var deleteAction = false;
// delete procedure
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
deleteAction = false;
// check bad words
for (var j = 0; j <= badWords.length - 1; j++) {
var myPattern = new RegExp(badWords[j], regExpModifiers);
var status = row[fnameColumnNumber].toString().match(myPattern);
if (status) {
// match found, mark this row for delete
deleteAction = true;
break;
};
};
// check bad domains
for (var j = 0; j <= badDomains.length - 1; j++) {
var myPattern = new RegExp(badDomains[j], regExpModifiers);
var status = row[emailColumnNumber].toString().match(myPattern);
if (status) {
// match found, mark this row for delete
deleteAction = true;
break;
};
};
// check bad words
for (var j = 0; j <= badWords.length - 1; j++) {
var myPattern = new RegExp(badWords[j], regExpModifiers);
var status = row[companyColumnNumber].toString().match(myPattern);
Logger.log(status)
if (status) {
// match found, mark this row for delete
deleteAction = true;
break;
};
};
// execute delete.
if (deleteAction) {
sheet.deleteRow((parseInt(i) + 1) - rowsDeleted);
rowsDeleted++;
};
};
}
答案 1 :(得分:0)
您可以使用@property
查找部分字符串。另外,请勿单独删除工作表中的行。那是低效的。从数组中删除元素(行),清除工作表选项卡,然后设置所有新值。
indexOf('what to find')