Google apps script 谷歌表单&x2013;当列A中的单元格包含字符串时删除行

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 =

我是新手。我在a列中有一个URL列表

我想创建一个按钮,每当列a中的单元格包含关键字列表中的一个时,该按钮就可以帮助我删除一行。我试图用下面的代码删除包含“blogspot”的所有行

它仍然不起作用。我得到这个错误:“TypeError:thisVal.indexOf不是一个函数”

然而,我甚至不确定我是否可以在“blogspot”之外添加多个字符串。例如,我想删除包含blogspot、wordpress和wix的所有行

    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); 
  }
}