Импорт из одной рабочей книги в основную рабочую книгу с разными исходными ячейками - PullRequest
0 голосов
/ 02 июня 2018

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

Ошибка

Ожидается

Вот мой код

    function myFunction() {


 //get the date from current Spreadsheet
 // C3 J6 F10-F14
 var sourcesheet = SpreadsheetApp.getActiveSheet();
 var analyst = sourcesheet.getRange('C3');
 var analystVal = analyst.getValues();

 var finalScore= sourcesheet.getRange('J6');
 var finalScoreVal = finalScore.getValues();

 var communication= sourcesheet.getRange('F10');
 var communicationVal = communication.getValues();

 var criteria1= sourcesheet.getRange('F11');
 var criteria1Val = criteria1.getValues();

 var criteria2= sourcesheet.getRange('F12');
 var criteria2Val = criteria2.getValues();

 var criteria3= sourcesheet.getRange('F13');
 var criteria3Val = criteria3.getValues();

 var criteria4= sourcesheet.getRange('F14');
 var criteria4Val = criteria4.getValues();

 //Open new Spreadsheet & paste the data
  var megaform = SpreadsheetApp.openById("1H0v-rFqL4EKvixi5oTVJ65nTxnEzHJlPmu5SUrkgJp4");
  Logger.log(megaform.getLastRow());
  megaform.getActiveSheet().getRange(megaform.getLastRow()+1, 3).setValues(analystVal);
  megaform.getActiveSheet().getRange(megaform.getLastRow()+1, 4).setValues(finalScoreVal);
  megaform.getActiveSheet().getRange(megaform.getLastRow()+1, 5).setValues(communicationVal);
  megaform.getActiveSheet().getRange(megaform.getLastRow()+1, 6).setValues(criteria1Val);
  megaform.getActiveSheet().getRange(megaform.getLastRow()+1, 7).setValues(criteria2Val);
  megaform.getActiveSheet().getRange(megaform.getLastRow()+1, 8).setValues(criteria3Val);
  megaform.getActiveSheet().getRange(megaform.getLastRow()+1, 9).setValues(criteria4Val);

}

В основном, когда это работает,Я планирую расширить его на несколько листов из нескольких рабочих книг в основную рабочую книгу.Заранее спасибо.

1 Ответ

0 голосов
/ 05 июня 2018

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

function getMyData() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var dtA=[vA[2][2],vA[5][9],vA[9][5],vA[10][5],vA[11][5],vA[12][5],vA[13][5]];// C3 J6 F10-F14
  var dsA=[];
  for(var i=0;i<dtA.length;i++){
    dsA.push(Utilities.formatDate(new Date(dtA[i]),Session.getScriptTimeZone(),"E MM dd, yyyy"));
  }
  appendToMasterData(dsA);
}

function appendToMasterData(dA){
  var ss=SpreadsheetApp.openById('1auR3L1hTLw_P0fSJ8MJ470nYr-rVfAxvCUCLcW9Nl20');
  var sh=ss.getSheetByName('Sheet1');
  sh.appendRow(dA)

}

Исходный лист:

enter image description here

Ваши данные были выделены светло-зеленым цветом, и все онидаты.

Мастер лист:

enter image description here

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