Как лучше всего ограничить количество ответов на каждой вкладке «Листы» и учесть «предпочтения» пользователя с помощью скрипта Apps? - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь написать сценарий некоторых приложений, который будет сортировать список людей по различным видам деятельности в зависимости от их предпочтений.

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

Джон выбирает видеоигры в качестве своего первого предпочтения, второго плавания и рисования. как его последнее предпочтение. Сценарий должен сначала посмотреть на первое предпочтение Джона и попытаться разместить его на вкладке «видеоигры». Если это действие «полное» (я думал об ограничении числа строк в каждом листе активности ... будет ли это работать?), Оно будет пытаться перейти к следующему предпочтению (плавание) и попытаться поместить его под этой вкладкой вместо.

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

1 Ответ

0 голосов
/ 14 января 2020

Без дополнительной информации о том, как настроены ваши данные или какой-либо код, который вы, возможно, попробовали, очень сложно дать вам полный ответ.


Вариант 1: отметьте Javascript, если предпочтение максимально:

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

var dictionary = {};
dictionary["swimming"] = [];
dictionary["videoGames"] = [];
dictionary["painting"] = [];

После этого вы можете просто проверить для каждого предпочтения, заполнен ли массив:

// After checking the preference exists
if dictionary[preference].length > 10: // 10 participants max
    Logger.log("This preference is full");
else:
    dictionary[preference].push(variable); // Whatever you want to insert here

И после этого, конечно, просто go вставить все переменные в соответствующие листы.


Вариант 2: Вставить непосредственно в листы и проверить, заполнен ли

Другой вариант - вставить в листы непосредственно, проверяя, не исчерпан ли уже максимум.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(preference);

if sheet.getLastRow() > 10:
    Logger.log("This preference is full");
else: 
    sheet.appendRow(["1st column", "2nd column", "3rd column"]);

В случае, если вы хотите посмотреть ссылку на эти функции.

...