Я сделал простое веб-приложение с GS и теперь мне нужно оптимизировать скорость загрузки данных из Gsheet. Описание приложения:
Это инструмент для сбора правильных цветов продукта на изображении. Когда пользователь нажимает кнопку загрузки изображения, приложение считывает URL-адрес из Gsheet, где все задачи хранятся в строках, и загружает изображение. Затем пользователь выбирает цвета из палитры и отправляет цвета. Затем приложение сохранит выбранные значения цвета в той же строке URL-адреса изображения.
Каждое задание должно быть назначено n пользователям (не более, не меньше, по запросу обратной связи, как показано ниже), чтобы избежать смещения, и одно и то же задание должно не может быть назначен одному и тому же пользователю более одного раза. Поэтому я хранил задачи следующим образом:
index imageID URL feedbackRequested user rgb_value
1 104904677 *** 3
2 104904677 *** 3
3 104904677 *** 3
4 104904678 *** 2
5 104904678 *** 2
Я распределял n feedbackRequested
по n строкам, чтобы назначить задачи. Поэтому, когда пользователь нажимает на изображение загрузки, будет выполнено следующее:
- получить массив со всеми идентификаторами изображений, которые этот пользователь сделал;
var user = Session.getActiveUser().getEmail();
var data = sheet.getRange(1,2,sheet.getLastRow(),4).getValues();
var filter_user = ArrayLib.filterByText(data, 3, user);
var user_imageIDs = filter_user.map(function(value,index) {return value[0]});
если imageID находится в массиве или пользователь не пуст, продолжайте поиск, пока мы не найдем строку;
var ct = 1;
while ( (user_imageIDs.includes(data[ct][0])) || (data[ct][3] != '') ) {
ct++;
};
установить пользовательское значение для пользователя в этой строке и сохранить его ответ в rgb_value.
sheet.getRange(ct+1, 5,1,2).setValues(user, somevalue);
Таким образом, поиск условной строки занимает много времени, пока l oop. Есть ли другие способы сделать это?
Я знаю, что это много информации. Большое спасибо заранее! Пожалуйста, дайте мне знать, если вам нужен весь код для воспроизведения.