Google apps script 谷歌表单&x2013;当列A中的单元格包含字符串时删除行
我是新手。我在a列中有一个URL列表 我想创建一个按钮,每当列a中的单元格包含关键字列表中的一个时,该按钮就可以帮助我删除一行。我试图用下面的代码删除包含“blogspot”的所有行 它仍然不起作用。我得到这个错误:“TypeError:thisVal.indexOf不是一个函数” 然而,我甚至不确定我是否可以在“blogspot”之外添加多个字符串。例如,我想删除包含blogspot、wordpress和wix的所有行Google apps script 谷歌表单&x2013;当列A中的单元格包含字符串时删除行,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我是新手。我在a列中有一个URL列表 我想创建一个按钮,每当列a中的单元格包含关键字列表中的一个时,该按钮就可以帮助我删除一行。我试图用下面的代码删除包含“blogspot”的所有行 它仍然不起作用。我得到这个错误:“TypeError:thisVal.indexOf不是一个函数” 然而,我甚至不确定我是否可以在“blogspot”之外添加多个字符串。例如,我想删除包含blogspot、wordpress和wix的所有行 function cleanRows() { var ss =
function cleanRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('Master');
var colA_Vals = sh.getRange(1, 1, sh.getLastRow(), 1).getValues();
var i = 0,
j = 0,
thisVal,
chkVal,
arrayValsToChk = ['blogspot'];
for (i=colA_Vals.length;i>0;i-=1) {
thisVal = colA_Vals[i-1][0];
//Logger.log('i: ' + i);
for (j=0;j<arrayValsToChk.length;j+=1) {
chkVal = arrayValsToChk[j].toLowerCase() //Change to all lower case;
if (thisVal.indexOf(chkVal) !== -1) {
ss.deleteRow(i);
};
};
};
};
函数cleanRows(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh=ss.getSheetByName('Master');
var colA_Vals=sh.getRange(1,1,sh.getLastRow(),1).getValues();
var i=0,
j=0,
提斯瓦尔,
切克瓦尔,
arrayValsToChk=['blogspot'];
对于(i=colA_Vals.length;i>0;i-=1){
thisVal=colA_Vals[i-1][0];
//Logger.log('i:'+i);
对于(j=0;解释:
您的目标是删除列A中的单元格在arrayValsToChk
列表中包含字符串的行
- 您需要获取满足条件的行的位置,即单元格A中的字符串位于
arrayValsToChk
中。您可以使用和来获取索引
- 向后删除行,因为本节中也解释了原因
解决方案:
不起作用。我得到错误“v.toLowerCase不是函数”@RobPopolizio您需要启用V8环境。如果您使用的是旧的(旧的)编辑器转到运行=>启用由Chrome V8支持的新应用程序脚本运行时。如果您正在使用新编辑器,请单击编辑器左侧的设置按钮,并标记“启用Chrome V8运行时”选项。Chrome V8运行时已启用,不再出现错误,但当我尝试运行该宏时,不会发生任何事情。不会删除任何行@RobPopolizio如果您没有收到任何错误,那么请确保A列有以下大写或小写单词之一:blogspot、wordpress、wix
。确保没有多余的空格或拼写错误。
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("Master");
const colA_Vals = sh.getRange(1, 1, sh.getLastRow(), 1).getValues();
const arrayValsToChk = ['blogspot','wordpress','wix']; // list of strings
const indexToDlt= colA_Vals.flat()
.map((v,i)=>arrayValsToChk.includes(v.toString().toLowerCase())?i:'')
.filter(v=>v!='');
for (let i = indexToDlt.length - 1; i>=0; i--) {
sh.deleteRow(indexToDlt[i]+1);
}
}