Скрипт приложения Google листов - сбор горизонтальных данных и их вертикальная установка - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь взять последовательность данных, которые располагаются горизонтально в одной строке, из приложения листов Google с помощью функции скрипта Google getValues, а затем поместить их на другой лист, расположенные вертикально в одном столбце.Мой код в настоящее время выглядит следующим образом:

function tester() {
  var app = SpreadsheetApp;
  var loader = app.getActiveSpreadsheet().getSheetByName('Loader');
  var stats = app.getActiveSpreadsheet().getSheetByName('Stats');
  var list = app.getActiveSpreadsheet().getSheetByName('List');  

  var xpos = 19;
  var ypos = 2;

  var abilityBlock = list.getRange(ypos,xpos,1,16).getValues();

  Logger.log(abilityBlock);

  //loader.getRange(10,5,16,1).setValues(abilityBlock);

  }

Я закомментировал часть setValues, потому что она возвращает ошибку, говоря, что ожидается, что данные будут иметь ширину 16, а данные, которые они собирают, имеют высоту 16.

Из того, что я могу собрать, виноват здесь то, как данные попадают в массив.Регистратор отображает данные как [[значение1, значение2, значение3, значение4 и т. Д.]] Вместо [[значение1], [значение2], [значение3], [значение4], [и т. Д.]]

Я бы хотел избежать использования цикла for для одновременной загрузки данных, есть ли другой способ преобразования данных в массив?Или другой способ использовать операцию getValues, чтобы получить ее в формате, который я могу использовать?

1 Ответ

0 голосов
/ 14 ноября 2018

Я думаю, вы хотите использовать функцию транспонирования.

попробуйте

list.getRange(ypos,xpos,1,16).copyTo(loader.getRange(10,5), 
                     spreadsheetApp.CopyPasteType.PASTE_VALUES, true);

описание здесь: https://developers.google.com/apps-script/reference/spreadsheet/range#copyTo(Range,CopyPasteType,Boolean)

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