Для l oop проверить значения из двух электронных таблиц - PullRequest
0 голосов
/ 31 января 2020

У меня есть две таблицы:

  • В столбце A на листе 6-го и 7-го списков перечислены все идентификаторы в образце, содержится 853 элемента.
  • Столбец C на листе уже представлен. Содержит идентификаторы пользователи, которые выполнили задачу. Содержит 632 элемента.

Я пытаюсь проанализировать оба столбца. Если пользователь из столбца A листа 6th и 7thRoster совпадает с пользователем из столбца C листа sandboxAlreadySubmitted, я хочу написать слово «Да» в столбце I текущей строки листа 6th и 7thRoster. При использовании приведенного ниже кода я не вижу каких-либо экземпляров слова «Да» в столбце I 6-го и 7-го стихов, хотя я знаю, что это может иметь место в нескольких местах.

function checkRoster() {
  var mainSheet = SpreadsheetApp.openById('XXXXXXX');
  var roster = mainSheet.getSheetByName('6th&7thRoster');
  var submissions = mainSheet.getSheetByName('alreadySubmitted');

  var rosterLastRow = roster.getLastRow();
  var submissionsLastRow = submissions.getLastRow();

  var rosterArray = roster.getRange('A2:A853').getValues();
  var submissionsArray = submissions.getRange('C2:C632').getValues;

  var i;
  var x;
  for (i = 1; i < 853; i++) {
    for (x = 1; x < 632; x++){
      if (rosterArray[i] == submissionsArray[x]){
        roster.getRange(i, 9).setValue("Yes");
      }
    } 
  }
}

Отзывы о том, как решить и достичь этой задачи, будут высоко оценены. В целях конфиденциальности я не могу поделиться оригинальными листами.

1 Ответ

3 голосов
/ 31 января 2020
  • Вы хотите вычислить значения A2:A853 из 6th&7thRoster и C2:C632 из alreadySubmitted.
  • Когда значения C2:C632 из alreadySubmitted совпадают с значения A2:A853 из 6th&7thRoster, вы хотите поместить Yes в столбец «I».

Если мое понимание верно, как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Модифицированный скрипт:

function checkRoster() {
  var mainSheet = SpreadsheetApp.openById('XXXXXXX');
  var roster = mainSheet.getSheetByName('6th&7thRoster');
  var submissions = mainSheet.getSheetByName('alreadySubmitted');

  var rosterLastRow = roster.getLastRow();
  var submissionsLastRow = submissions.getLastRow();

  var rosterArray = roster.getRange('A2:A853').getValues();
  var submissionsArray = submissions.getRange('C2:C632').getValues(); // Modified

  // I modified below script.
  var obj = submissionsArray.reduce(function(o, [v]) {
    if (v) o[v] = true;
    return o;
  }, {});
  var values = rosterArray.map(function([v]) {return [obj[v] ? "Yes" : ""]});
  roster.getRange(2, 9, values.length, values[0].length).setValues(values);
}

Поток:

  1. Извлечение значений из A2:A853 из 6th&7thRoster и C2:C632 из alreadySubmitted.
  2. Создать объект для поиска значений по значениям alreadySubmitted.
  3. Создать значения строк для установки в 6th&7thRoster.

Ссылки:

Если я неправильно понял ваш вопрос, а это не то направление, которое вы хотите, я прошу прощения.

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