在Google Apps脚本中是否有一种有效的方法来在单元格的列中搜索并附加字符串?

问题描述 投票:0回答:1

正如标题所述,我目前正在运行一个我认为可能更有效的功能。

基本上,我在电子表格中有一列(k),我正在其中查找文本"delete"。如果找到该文本,则只需在其后附加", removed"。这样,如果电子表格中运行的Appsheet看到文本"removed",就不会显示该行。

例如,运行函数后,col k的随机行可能看起来像这样:delete, completed, removed

这里的问题是我们的工作表有4000行,要花费1000秒以上才能完成。当然,必须有一种更快的方式来搜索和添加文本,而不是通过for循环为表单中的每一行迭代。]

function removeDeleted() {
  var ss = SpreadsheetApp.openById(BD_SPREADSHEET_ID);
  var data = ss.getSheetByName(DATA_TAB);
  var dataRange = data.getDataRange().getValues();
  var colData = [];

  for (var i = 1; i < dataRange.length; i++) {
    colData.push(dataRange[i][0]);
  }

  for (var i = 0; i < colData.length; i++) {

    // Take every cell except the first row on col Q (11), as that is the header
    var comments_cell = data.getDataRange().getCell(i + 2, 11).getValue();

    // Check for string "delete" inside cell
    if (comments_cell.toString().indexOf("delete") !== -1 || comments_cell.toString().indexOf("Delete") !== -1) {

      // Check for string "removed" not already inside cell
      if (!(comments_cell.toString().indexOf("removed") !== -1)) {

        // Append ", removed"
          data.getDataRange().getCell(i + 2, 11).setValue(comments_cell + ", removed");
      }
    }
  }
}

我仍在学习Google Apps脚本和电子表格的集成,因此我觉得这两个for循环可能有些冗余。任何帮助,将不胜感激。

正如标题所述,我目前正在运行一个我认为可能更有效的功能。本质上,我在电子表格中有一个列(k),我在其中查找文本“删除”。如果该文本...

string google-apps-script google-sheets processing-efficiency
1个回答
0
投票

我还没有测试过,但是我认为这应该可以满足您的需求。我对每一行都进行了注释,以帮助解释逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.