Я думаю, это то, что вы ищете. Вам нужно использовать правильную функцию getRange (), которая определяет размеры диапазона; тот, который принимает только два аргумента, всегда возвращает одну ячейку.
Программа также устанавливает цвет фона для ясности в том, что диапазон на самом деле.
Это также установит выбор, но вы, возможно, захотите понять связь между диапазонами и Классом выбора
function addSong(song) {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var lastRow = sheet.getLastRow()
sheet.appendRow([lastRow+1,song]);
var range = sheet.getRange(sheet.getLastRow(), 1);
// getRange(row, column, numRows, numColumns)
var range = sheet.getRange(sheet.getLastRow()-1, 1, 2, 2);
SpreadsheetApp.setActiveRange(range);
range.setBackground('green');
}
function test() {
addSong("Stairway to Heaven");
}
Так как список фруктов, из которых Вы выбираете, может быть произвольно длинным, я предложил бы следующее:
create table FruitList (FruitName char(30))
insert into FruitList values ('apples'), ('pears'), ('oranges')
select * from FruitList left outer join AllFruits on AllFruits.fruit = FruitList.FruitName
where AllFruits.fruit is null
Левое внешнее объединение должно быть намного быстрее, чем "не в" или другие виды запросов.
Составьте поисковый список в строку, которая похожа '|fruit1|fruit2 |... fruitn |', и сделайте Ваш где пункт:
where
@FruitListString not like '%|' + fruit + '|%'
Или, проанализируйте вышеупомянутую строку во временную таблицу или табличную переменную и сделайте where not in (select fruit from temptable)
. В зависимости от количества объектов Вы ищете и количество искавших объектов, этот метод мог быть быстрее.
if exists(select top 1 name from fruit where name in ('apples', 'pairs', 'pomegranates'))
PRINT 'one exists'