Условие IFS скрипта Google

Может ли кто-нибудь помочь мне преобразовать эту формулу Google Sheet в сценарий?

Мне нужно сравнить столбцы A и B, а затем мне нужно получить ответ в столбце C.

=IFS(AND(A2 = "Fruit,",B2 = "Apple"),"OK",AND(A2 = "Fruit,",B2 = "Orange"),"OK",A2<>"Fruit","NOK")

Зачем нужен сценарий? Вы не даете контекста и не показываете, что вы сделали сами.

RemcoE33 20.12.2020 16:54

Привет, Мариос, функция NOK не работает. Не могли бы вы поддержать меня на этом условии, пожалуйста? Если A = "Хорошо" и B = "5star", то C = "OK" Если A = "Fair" и B = "5star", то C = "OK" Если A! = "Fair" или A!= "Хорошо" и B = "1star", затем C = "OK" во всех остальных случаях должно быть "NOK"

Moses 21.12.2020 12:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
121
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Тем не менее... Должно быть что-то вроде этого:

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");
    }
  }
}
Ответ принят как подходящий

Объяснение:

По сути, это этот ответ с несколькими изменениями/улучшениями. Это просто рекомендуемый способ сделать это:

  1. В соответствии с лучшими практиками избегайте выполнения getRange/setValue в цикле.

  2. Вы определенно можете использовать цикл for для выполнения 1), хотя карта быстрее, требует меньше переменных и в целом более эффективна.

  3. Метод getLastRow гарантирует, что вы не перебираете пустые ячейки (после последней строки с содержимым).

  4. Я предпочитаю использовать тернарный оператор для таких случаев, как этот, потому что он делает ваш код меньше и более управляемым. Но этот шаг необязателен.

Наконец, я думаю, вы хотите 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);
}

Другие вопросы по теме