У меня есть таблица 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 да
эй @ian, очень ясно. Я представил свое предложение в ответе ниже, а также реализовал код на вашем листе. Дальнейшее объяснение в моем ответе
Привет @ LucasLui888 Спасибо за ваше время :) Можем ли мы установить ту же проверку на основе строки, я думаю, она работает на основе столбца
Эй, да, только что добрался до раздела .getRange()
, чтобы изменить то, где вы хотите, чтобы это влияло, в настоящее время я выбрал весь Col C.
Попробуйте и дайте мне знать, помогло ли это решить проблему, с которой вы столкнулись :)
Привет @ LucasLui888 Еще раз спасибо, я попробовал ваше предложение, но не уверен, что мне здесь не хватает. Что я пытаюсь сделать здесь, так это то, что если пользователь выбирает «Выполняется» в ячейке C1, в раскрывающемся списке не должно отображаться «Выполняется» в ячейка C1, но она должна отображаться в остальных ячейках столбца C до тех пор, пока пользователь не выберет «Выполняется». Но теперь, если я выберу «Выполняется» в ячейке C1, значение «Выполняется» не отображается в выпадающий ниже ячеек C1
Эй, Ян, я добавил немного конкретики в код и попробовал, теперь он должен работать. Пожалуйста, найдите новый код в моем отредактированном ответе.
К сожалению, вы можете захотеть объединить это с фактором времени, потому что в настоящее время вы установили его при редактировании, и что он делает, если кто-то еще не вносит изменения, новый раунд «В процессе» для последнего будет по-прежнему доступен.
Итак, вам нужно два триггера, onedit и время, затрачиваемое каждую минуту для проверки ячеек.
Эй, новое предложение смогло помочь?
Привет @ LucasLui888 извините за поздний ответ, это идеально, спасибо за ваше время и помощь
Эй, я бы порекомендовал использовать цикл для каждого для чтения каждой строки 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
}
});
}
Рекомендации:
Эй, вы имеете в виду, что хотите установить систему, основанную на вехах? Как только они выбрали «в процессе», это не должно быть выбором в будущем?