Google Script: getValues ​​() и setValues ​​() для прямоугольной сетки - PullRequest
1 голос
/ 24 июня 2019

В Google Sheets, когда я сохраняю данную a1notation в appendRow, я хочу, чтобы значения из этой добавленной строки отображались на другом листе, сохраняя структуру сетки, которая была при первоначальном сохранении.

Таким образом, из приведенного ниже кода, данные из appendedRow (11,5,1,5) должны быть установлены в сетке I5: J7.

К сожалению, я не достаточно опытен, чтобы работать с for циклами иpush() / array, поэтому я был бы очень признателен за вашу поддержку.

Спасибо.

function Test() {
  var rs = SpreadsheetApp.getActiveSpreadsheet();
  var ss = rs.getSheetByName("Sheet");

  var tempArray = [ss.getRange(11,5,1,5)]
  var values = tempArray.getValues();

  ss.getRange('I5:J7').setValues(values);
}

1 Ответ

0 голосов
/ 25 июня 2019

В документации по Google Apps Script есть справочный раздел, в котором приводится краткое описание и примеры различных методов.В разделе

https://developers.google.com/apps-script/reference/spreadsheet/range#setvaluesvalues

вы можете видеть, что для метода setValues ​​(values) требуется соответствие размеров исходного и конечного диапазонов.Таким образом, вы не можете вставить диапазон 1x5 в диапазон 2x3.

То, что вы можете сделать, - это циклически проходить по ячейкам диапазона назначения и назначать им последовательно значение из диапазона источника - до тех пор, пока либо не будут переданы все значения, либо диапазон назначения не заполнится.Вы можете реализовать это так:

function Test() {
  var rs = SpreadsheetApp.getActiveSpreadsheet();
  var ss = rs.getSheetByName("Sheet");

  var values = ss.getRange(11,5,1,5).getValues();
  var destination=ss.getRange('I5:J7');
  var value=0;
  for(i=1;i<=3;i++)
  {
    for(j=1;j<=2;j++)
    {
      var cell=destination.getCell(i,j);
      if(typeof values[0][value] !== "undefined")
      {
        cell.setValue(values[0][value]);
      }
      value=value+1;
    }
  }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...