Передача данных в строку соответствия в индексе - PullRequest
0 голосов
/ 05 января 2019

Я новичок в Google Sheets и пытаюсь реализовать скрипт, который будет выдвигать данные из 'анализа 1-го этапа' F: H обратно в 'мастер-список' F: H .

Кажется, я не могу разобраться с кодом для сопоставления значений имени в выпадающем списке с правильной строкой в ​​основном списке.

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

Вот моя таблица


Вот моя текущая функция

function myFunction(){
var ss=SpreadsheetApp.getActive();//this is the active spreadsheet

var sh=ss.getSheetByName("stage 1 analysis");//this gets the stage 1 analysis sheet

var rg=sh.getRange(2,6,sh.getLastRow()-1,3);//this gets the range of available data on staget 1 analysis sheet

var vA=rg.getValues();//this gets the values from stage 1 analysis into a 2 dimensional array.  Note for future use even a 1 column or 1row is a 2d array.

var tsh=ss.getSheetByName("master list");//this gets the master list sheet

tsh.getRange(tsh.getLastRow()+1,6,vA.length,3).setValues(vA);//this defines the range which is the next available row with no data in it that fits the 2 dimensional array from stage 1 analysis sheet.
}

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

Как обычно, любая помощь будет признательна, и большое спасибо заранее.

1 Ответ

0 голосов
/ 05 января 2019

Эта функция просматривает основной список в поисках строк на листе анализа стадии 1 с тем же именем. Если он найден, он копирует данные из этапа 1 анализа в столбцах F и H в основной список.

function stageOneAnalysisToMasterList(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("stage 1 analysis");
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var tsh=ss.getSheetByName("master list");
  var trg=tsh.getDataRange();
  var tvA=trg.getValues();
  for(var i=1;i<tvA.length;i++){
    for(var j=1;j<vA.length;j++){
      if(tvA[i][0]==vA[j][0]){
        tvA[i][5]=vA[j][5];
        tvA[i][7]=vA[j][7];
      }
    }
  }
  trg.setValues(tvA);
}

Я добавил код, чтобы поместить вашу кнопку на боковой панели электронной таблицы.

function stage1AnalysisSideBar(){
  var html='<input type="button" value="Copy Stage 1 to MasterList" onClick="google.script.run.stageOneAnalysisToMasterList()" />';
  var userInterface=HtmlService.createHtmlOutput(html).setWidth(800);
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

Ссылки

Надеюсь, это поможет вам начать.

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