正在寻找帮助解决我的脚本问题的人。
我试图编写一个请求用户输入的脚本,遍历搜索输入的数据集,并突出显示相应行中的所有单元格。
我很欣赏这是一个相当基本的请求,但是已经浏览了Stackoverflow /更广泛的网络几个小时并且针对不同问题实施解决方案无济于事,有人可以帮我修复我的代码。
示例:
鉴于此样本数据。如果用户输入" C"然后第3行(C,5,8)中的所有单元格将突出显示为红色
我们希望用户输入" 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");
}
}
}
}
&#13;
答案 0 :(得分:0)
我同意评论者所说的内容,你需要确保你真的想要===而不是.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');
}
}
}
}