Google Script массив "для" производительности - PullRequest
0 голосов
/ 03 октября 2018

Я работаю с таблицей Google и скриптом Google.

У меня проблема с функцией for () в массиве.Его запуск 346 ++ секунд и не удалось.

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

Вот код, который я работаю, я проверил его в меньшем масштабе, и он работал:

function check2dArray() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("2d array");
  
  var dataInputValues = sheet.getRange("A:B").getValues();
  
  var dataCheckValues = sheet.getRange("D:D").getValues();
  
  var writeResultColumn1 = sheet.getRange("F:F").getColumn();
  var writeResultColumn2 = sheet.getRange("G:G").getColumn();
  
  //clearing data
  sheet.getRange("F:G").clear();
  
  for(i=0;i<dataInputValues.length;i++){
    for(j=0;j<dataCheckValues.length;j++){
      if(dataInputValues[i][0] == dataCheckValues[j][0] & dataInputValues[i][0] != "" & dataInputValues[i][0] != "#N/A" ) {
        sheet.getRange(j+1, writeResultColumn1).setValue(dataInputValues[i][0]);
        sheet.getRange(j+1, writeResultColumn2).setValue(dataInputValues[i][1]);
      }
    }
  }
  
}

Я еще новичок в этом, может быть, есть лучший способ решить?

Вот скриншот моего листа

Скриншот листа

скриншот кода

Вот ссылка на мой лист:

https://docs.google.com/spreadsheets/d/1DVbNaehsTWkiIkzW2nQx7w-ZB8CrPmSP5T5CpU24mbU/edit?usp=sharing

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