google-sheets - 如果 "Column A"单元格包含给定文本,如何删除 Google 表格中的行

标签 google-sheets google-sheets-api

我正在尝试实现一个 Google 脚本,以便如果 A 列中的任何单元格包含任何指定的文本,那么它将删除整行。这是我正在处理的内容...

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1'); // change to your own
  var values = s.getDataRange().getValues();

  for (var row in values)
    if (values[row][0] == 'glass')
      s.deleteRow(parseInt(row)+1);

    else if (values[row][0] == 'Glass')
      s.deleteRow(parseInt(row)+1);

};

我将包含多个不同的标准来为我清理电子表格。有些行可能包括“汽车玻璃”、“汽车玻璃”、“玻璃修理”、“玻璃医生”、“玻璃史密斯”等...

目前,此代码删除 A 列单元格为“Glass”或“glass”的行。

请帮忙!!

最佳答案

您必须从末尾删除行。如果从头开始并删除一行,则该行下面的所有行现在将与数组中值的顺序不同步。删除第一行后,所有其他被删除的行都可能是错误的行,除非您调整行号的代码。尝试使用此代码:

function cleanRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('Sheet1');

  var colA_Vals = sh.getRange(1, 1, sh.getLastRow(), 1).getValues();

  var i = 0,
      j = 0,
      thisVal,
      chkVal,
      arrayValsToChk = ['glass'];

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

记下要检查的所有值的数组。将新值添加到数组中以检查其他值。

关于google-sheets - 如果 "Column A"单元格包含给定文本,如何删除 Google 表格中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34643421/

相关文章:

javascript - Google 应用程序脚本 - 将一些功能移动到单独的文件中

post - Apps 脚本 - 使用 Google Sheets REST API v4 - 未写入值 - 无错误消息

ios - Google Sheets API 根本不起作用?

android - 通过 API v4 更新 Google 表格时转义单引号 (')

javascript - 如何在谷歌脚本中获取非空白单元格的范围

mysql - Google 表格 JDBC 脚本中的西里尔数据库内容

javascript - 谷歌脚本: Function to tally votes

python - 如何在 gspread 中使用 batch_update 插入行和更改单元格样式?

javascript - Google 脚本将文件大小驱动到电子表格 - 文件迭代器不起作用

google-apps-script - 脚本无法将变量识别为 ID