Сценарий Google Apps считывает и сопоставляет значения ячеек на разных листах - PullRequest
0 голосов
/ 15 февраля 2019

Я впервые пишу скрипт Google для обработки данных из таблицы Google.Лист Google состоит из двух листов, которые основаны на другой форме Google.

Цель состоит в том, чтобы автоматически подбирать людей, которые хотят обучать других людей предмету или нескольким предметам.Например (см. Изображения) Джонни должен быть сопоставлен с Лорен, а Майкл - с Джоном.

Я сделал этот код для проверки Майкла и Джонни, которые могут обучать их.Что я хотел сделать, так это проверить предметную физику, хочет ли Микал обучаться этому предмету, и кто может это сделать.Тогда то же самое для Джонни.И повторите это с другим предметом (английский).

В этом примере я начал с проверки только предмета;физика.Это просто для того, чтобы увидеть, помечена ли физика «Да» или «Нет».

[КОД В КОНЦЕ]

Когда я смотрю на мой журнал, я ожидаю увидеть: Нет Да НетДа Да Нет

Но вместо этого я вижу: Нет Да Нет

лист с людьми, которые хотят делать ставки наставника enter image description here

лист с репетиторами enter image description here

function myFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    /* sheet with people who want to tutor other people */
    var lr = ss.getLastRow(); // how many rows
    var kk =
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hebber");
    /* sheet with people who want to be tutored */
    var klr = kk.getLastRow(); // how many rows

    for (var i = 2; i <= klr; i++) {

        var hemail = kk.getRange(i, 2).getValue();
        var hname = kk.getRange(i, 3).getValue();
        var hphysics = kk.getRange(i, 4).getValue();
        var henglish = kk.getRange(i, 5).getValue();

        Logger.log(hphysics);

        for (var i = 2; i <= lr; i++) {

            var gemail = ss.getRange(i, 2).getValue();
            var gname = ss.getRange(i, 3).getValue();
            var gphysics = ss.getRange(i, 4).getValue();
            var genglish = ss.getRange(i, 5).getValue();

            Logger.log(gphysics);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Проблема, похоже, связана с переменными счетчика.

См. Мой пример и вывод:

var klr = 3;
var lr = 3;

for (var i = 0; i <= klr; i++) {
  console.log("f1." + i);
  for (var i = 0; i <= lr; i++) {
    console.log("f2." + i);
  }
}
f1.0
f2.0
f2.1
f2.2
f2.3

Итак, чтобы ответить на ваш вопрос, вам нужно использовать альтернативную переменную во втором цикле for:

для (var i = 2; i<= klr; i ++) {</p>

    var hemail = kk.getRange(i, 2).getValue();
    var hname = kk.getRange(i, 3).getValue();
    var hphysics = kk.getRange(i, 4).getValue();
    var henglish = kk.getRange(i, 5).getValue();

    Logger.log(hphysics);

    for (var j = 2; i <= lr; j++) {

        var gemail = ss.getRange(j, 2).getValue();
        var gname = ss.getRange(j, 3).getValue();
        var gphysics = ss.getRange(j, 4).getValue();
        var genglish = ss.getRange(j, 5).getValue();

        Logger.log(gphysics);
    }
}
0 голосов
/ 15 февраля 2019

Попробуйте для второго цикла, используя j вместо i в качестве переменной.Поскольку вы используете i, когда скрипт возвращается к первому циклу for, он уже добавил числа к i, что заставляет его выйти из цикла раньше, чем вы хотите.Вам нужно использовать разные переменные, если вы не хотите, чтобы второй цикл for влиял на первую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...