Мне нужна помощь, чтобы отклонить выбор в раскрывающемся списке

У меня есть таблица Google для ведения журнала работы моих товарищей по команде с помощью скрипта приложения.

Мне нужна помощь, чтобы отклонить раскрывающийся список в столбце «Статус», как показано ниже.

Если "Дата начала" имеет значение, а пользователь выбирает "Выполняется",

Если «Дата закрытия» имеет значение, и пользователь выбирает «Завершено»,

Значения "Дата начала" и "Дата закрытия" генерируются на основе выбора в раскрывающемся списке столбца "Статус" "Выполняется" и   "Завершено".

Остальной статус должен иметь возможность изменяться в зависимости от требований пользователей.

Ссылка на листhttps://docs.google.com/spreadsheets/d/104zXXM3bEAZVE-CV2_Mit55ZeXEuZJWpFI1ia622T3A/edit#gid=249066000

Ссылка на скриптhttps://script.google.com/u/0/home/projects/11W7D3mbtDM_yRHlPsneOwclaM0APIQq13stIwWRtnohZUGTkHKuDSw7L/edit

Эй, вы имеете в виду, что хотите установить систему, основанную на вехах? Как только они выбрали «в процессе», это не должно быть выбором в будущем?

LucasLui888 18.03.2022 03:39

Привет @ LucasLui888 да

Ian 18.03.2022 09:04

эй @ian, очень ясно. Я представил свое предложение в ответе ниже, а также реализовал код на вашем листе. Дальнейшее объяснение в моем ответе

LucasLui888 19.03.2022 16:38

Привет @ LucasLui888 Спасибо за ваше время :) Можем ли мы установить ту же проверку на основе строки, я думаю, она работает на основе столбца

Ian 21.03.2022 16:45

Эй, да, только что добрался до раздела .getRange(), чтобы изменить то, где вы хотите, чтобы это влияло, в настоящее время я выбрал весь Col C.

LucasLui888 22.03.2022 03:22

Попробуйте и дайте мне знать, помогло ли это решить проблему, с которой вы столкнулись :)

LucasLui888 22.03.2022 03:24

Привет @ LucasLui888 Еще раз спасибо, я попробовал ваше предложение, но не уверен, что мне здесь не хватает. Что я пытаюсь сделать здесь, так это то, что если пользователь выбирает «Выполняется» в ячейке C1, в раскрывающемся списке не должно отображаться «Выполняется» в ячейка C1, но она должна отображаться в остальных ячейках столбца C до тех пор, пока пользователь не выберет «Выполняется». Но теперь, если я выберу «Выполняется» в ячейке C1, значение «Выполняется» не отображается в выпадающий ниже ячеек C1

Ian 23.03.2022 04:18

Эй, Ян, я добавил немного конкретики в код и попробовал, теперь он должен работать. Пожалуйста, найдите новый код в моем отредактированном ответе.

LucasLui888 23.03.2022 15:24

К сожалению, вы можете захотеть объединить это с фактором времени, потому что в настоящее время вы установили его при редактировании, и что он делает, если кто-то еще не вносит изменения, новый раунд «В процессе» для последнего будет по-прежнему доступен.

LucasLui888 23.03.2022 15:36

Итак, вам нужно два триггера, onedit и время, затрачиваемое каждую минуту для проверки ячеек.

LucasLui888 23.03.2022 15:36

Эй, новое предложение смогло помочь?

LucasLui888 27.03.2022 14:59

Привет @ LucasLui888 извините за поздний ответ, это идеально, спасибо за ваше время и помощь

Ian 28.03.2022 19:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
12
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эй, я бы порекомендовал использовать цикл для каждого для чтения каждой строки Col F в основном, поскольку ваш код уже устанавливает дату и время, когда они впервые выбирают «Выполняется». Итак, если он начался (столбец F заполнен), то ПРОВЕРКА НОВЫХ ДАННЫХ будет установлен в столбец C.

function dropdown(){
  const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  const data = ss.getDataRange().getValues()
  var oldvalidation = SpreadsheetApp.newDataValidation().requireValueInList(['In-progress','Continue','Pause','Completed'], true).build();
  var newvalidation = SpreadsheetApp.newDataValidation().requireValueInList(['Continue','Pause','Completed'], true).build();

//Going down each row of Col F, if the cell is empty then skip, else if its filled (means started) then "in progress" milestone not included into new data validation
  data.forEach(function(row,col){
    if (col == "") return;
    if (row[5] != "")
    {
      ss.getRange(col+1,3).setDataValidation(newvalidation); //set new validation 
    }

    else
    {
      ss.getRange(col+1,3).setDataValidation(oldvalidation); //set new validation 
    }
});
}

Time driven every min

Рекомендации:

  1. https://spreadsheet.dev/foreach-loop-in-apps-script
  2. https://thewikihow.com/video_uJUVrhmv3A8

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