Может ли кто-нибудь помочь мне преобразовать эту формулу Google Sheet в сценарий?
Мне нужно сравнить столбцы A и B, а затем мне нужно получить ответ в столбце C.
=IFS(AND(A2 = "Fruit,",B2 = "Apple"),"OK",AND(A2 = "Fruit,",B2 = "Orange"),"OK",A2<>"Fruit","NOK")
Привет, Мариос, функция NOK не работает. Не могли бы вы поддержать меня на этом условии, пожалуйста? Если A = "Хорошо" и B = "5star", то C = "OK" Если A = "Fair" и B = "5star", то C = "OK" Если A! = "Fair" или A!= "Хорошо" и B = "1star", затем C = "OK" во всех остальных случаях должно быть "NOK"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Тем не менее... Должно быть что-то вроде этого:
function compair(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Data");
const values = sheet.getRange("A2:B").getValues();
for (var i = 0; i < values.length; i++){
if (values[i][0] == "Fruit" && values[i][1] == "Apple" || values[i][1] == "Orange"){
sheet.getRange(i + 2, 3).setValue("OK");
} else {
sheet.getRange(i + 2, 3).setValue("NOK");
}
}
}
По сути, это этот ответ с несколькими изменениями/улучшениями. Это просто рекомендуемый способ сделать это:
В соответствии с лучшими практиками избегайте выполнения getRange/setValue в цикле.
Вы определенно можете использовать цикл for для выполнения 1), хотя карта быстрее, требует меньше переменных и в целом более эффективна.
Метод getLastRow гарантирует, что вы не перебираете пустые ячейки (после последней строки с содержимым).
Я предпочитаю использовать тернарный оператор для таких случаев, как этот, потому что он делает ваш код меньше и более управляемым. Но этот шаг необязателен.
Наконец, я думаю, вы хотите Fruit, вместо Fruit, но вы можете изменить эту часть кода ниже.
function compair(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("Sheet1");
const vals = sh.getRange("A2:B"+sh.getLastRow()).getValues();
const fvals=vals.map(r=>[r[0]= = "Fruit," && ["Apple","Orange"].includes(r[1])?"OK":"NOK"]);
sh.getRange(2,3,fvals.length,1).setValues(fvals);
}
Зачем нужен сценарий? Вы не даете контекста и не показываете, что вы сделали сами.