Я создаю веб-приложение для электронной таблицы для боковой панели.
Попытка обработать обработчик событий, который реализует эти условия:
- при установке флажков (которые имеют соответствующие имена и ссылки в календаре для этих имен)
- и выбор 2 дат
- и затем нажав кнопку
После того, как все это сделано, из бэкэнда вызывается функция, которая получает события для этих имен и записывает их на лист.
Я не могу получить значения для имен и календарей в цикле . И не уверен, что это хороший способ поставить их. Я пытался справиться с этим по-разному - не повезло.
Я со временем сузил все вопросы до этих 2 частей:
1) как наилучшим образом загрузить данные на боковую панель.
2) как пройти через эти данные после взаимодействия пользователя с этими элементами и получить значения (зависит от части 1).
Я был бы очень признателен, если бы кто-нибудь помог мне немного больше (некоторые довольно простые решения).
Вот вариант с скриптлетами для использования GAS в html-файле:
<? for (var i = 0; i < loopNamesForSidebar().names.length; i++) { ?>
<label>
<input type="checkbox" class="filled-in check" checked="checked" />
<span>
<div class="collection">
<a href=" <?= loopNamesForSidebar().calendars[i] ?>" class="collection-item" >
<?= loopNamesForSidebar().names[i] ?>
</a>
</div>
</span>
<? } ?>
</label>
loopNamesForSidebar()
- это бэкэнд-функция, которая зацикливает имена и календари на боковую панель. Каждый раз, когда я открываю боковую панель, эти данные обновляются. Я не использовал его в моей передней части.
Вот код Javascript в html-файле:
//import jobs from calendars to sheet
function importJobs() {
//getting all checkboxes
var allCheckboxes = document.getElementsByClassName("check")
//getting inputs of start and end dates
var startDate = document.getElementById("startDate").value
var endDate = document.getElementById("endDate").value
var chosenNames = []
var calendars = []
//looping all checkboxes
for (var i = 0; i < allCheckboxes.length; i++) {
//getting value of each checkbox
var checkbox = allCheckboxes[i].checked;
//if checkbox is checked
if (checkbox == true) {
//getting correspondant employee name
var name = loopNamesForSidebar().names[i]
//and push it to an array
chosenNames.push(name)
//getting correspondant employee calendar
var cal = loopNamesForSidebar().calendars[i]
calendars.push(cal)
} else {
continue;
}
};
//push names and cals to object
var employees = {
names: chosenNames,
cals: calendars
}
//call function to get calendar events
google.script.run.getEvents(employees, startDate, endDate)
};