遍历数组并突出显示数据为 [Google Sheet 脚本的行

Iterating through an array and highlighting row where data is [Google Sheet script]

正在寻找帮助解决我的脚本问题的人。

我正在尝试编写一个脚本,请求用户输入,遍历数据集搜索输入,并将相应行中的所有单元格突出显示为红色。

我很感激这是一个相当基本的请求,但是我浏览了 Whosebug/the 更广泛的网络几个小时并且针对不同问题实施了解决方案但无济于事,有人可以帮我修复我的代码。

示例:

鉴于此示例数据。如果用户输入 "C",则第 3 行(C、5、8)中的所有单元格都将突出显示为红色

  1. A 3 6
  2. B 5 8
  3. C 5 8
  4. D 8 4

我们希望用户输入 "C" 并将第 3 行的所有相应活动单元格的背景更改为红色。

非常感谢任何帮助。

function HighlightMyTablet() {
  // Scan data in sheet. 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var row = ss.getActiveRange().getRowIndex();
  var range = ss.getDataRange();
  var values = range.getValues();
  
  // Prompt user for input. 
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('What\'s the tablet of the month?', ui.ButtonSet.OK_CANCEL);
  
  // Iterate through rows. If data matches input then highlight yellow.
  if (response.getSelectedButton() == ui.Button.OK) {
    for (i=0; i<values.length; i++) {
      if(values[i][0] == response) {
        values[i][0].setBackground("red");
      }
    }  
  } 
}

我同意评论者所说的,您需要确保您确实想要 === 而不是 .match(new RegExp(user_input, 'i')) 语句,这样会更好。但除此之外,您的错误是:您需要从响应中获取字符串。您正在获取响应对象。这样做是这样的:response.getResponseText()。其次,您需要设置范围的颜色,而不是数据本身的颜色。您可以在下面看到我是如何更新这两件事的。

function HighlightMyTablet() {
  // Scan data in sheet. 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var row = ss.getActiveRange().getRowIndex();
  var range = ss.getDataRange();
  var values = range.getValues();

  // Prompt user for input. 
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('What\'s the tablet of the month?', ui.ButtonSet.OK_CANCEL);

  // Iterate through rows. If data matches input then highlight yellow.
  if (response.getSelectedButton() == ui.Button.OK) {
    for (i=0; i<values.length; i++) {
      if(values[i][0] == response.getResponseText()) {
        ss.getRange('A'+ (i+1)).setBackground('red');
      }
    }  
  } 
}