将Column范围的值传递给Apps脚本中的变量

时间:2017-04-01 14:57:49

标签: google-apps-script google-sheets google-spreadsheet-api

所以我有这个脚本,如果regex匹配一个值(这里是'/ exe'),它会删除行。我想将另一个工作表(比如说Sheet1)的值的整列(A2:A)传递给regex变量,以便在Sheet2中比较和删除所有值。任何帮助都会被贬低。

SAMPLE SHEET HERE

function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet2");
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var toDelete = [];

var re = new RegExp('/exe'); 
  for (var row = 0; row < values.length; row++) { 
  for(var column = 0;column<values[row].length;column++){ 
  if (re.exec(values[row][column])){
  toDelete.push(row); } } }


  for(var deleteRow = toDelete.length-1; deleteRow >= 0;deleteRow--){
    sheet.deleteRow(toDelete[deleteRow]+1);
  }

  SpreadsheetApp.flush();
};

1 个答案:

答案 0 :(得分:1)

您可以以regexy方式连接它们。 在删除行中,您可以添加

var pattern = "(" + ss
    .getSheetByName("Sheet1")
    .getDataRange()
    .getValues()
    .map(function(row) {return row[0];})
    .filter(function(row, rowI) {return rowI > 0 && row !== "";})
    .join("|") + ")";

从Sheet1获取数据,将第一列作为数据提取,删除标题和空行并将它们与|连接起来,最后我们将它包装在parens中。

然后你可以var re = new RegExp(pattern);