Сценарий приложения Google Sheets: можете ли вы записать массив в одну строку вместо одного столбца? - PullRequest
1 голос
/ 23 сентября 2019

Метод .setValues() возьмет массив [[0],[1],[2],[3]] и запишет его в .getRange(), который должен находиться в нескольких строках в одном столбце: A1, A2, A3, A4.

ВместоЯ хочу написать тот же массив, но записать его в одну строку: A1, B1, C1, D1.Возможно ли это или мне нужно переставить массивы так, чтобы они всегда записывали в один столбец?

Редактировать: Извините, мне кажется, я неясен.Я в основном ищу метод или что-то похожее на метод appendRow с использованием массива.Массив может быть 1D или 2D (я могу легко написать цикл для создания либо).Причина, по которой appendRow не работает для меня, заключается в том, что этот метод разместит массив в нижней части данных.Я хотел бы поместить строку данных в диапазон, который я могу указать.

Например, используя приведенный выше массив, я хотел бы записать этот массив в getRange (1,4,1,4) с даннымиуже существует в getRange (1,3,10,10).

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Другой способ будет

var dataArray = [[0],[1],[2],[3]].reduce(function (a, b) {
    return a.concat(b);
});

Logger.log(dataArray); // [0, 1, 2, 3]

Или, если вам нужен 2D-массив (требуется .setValues ​​())

var dataArray = [[[0],[1],[2],[3]].reduce(function (a, b) {
    return a.concat(b);
})];
Logger.log(dataArray); // [[0, 1, 2, 3]] --> 2D array representing a single row.
1 голос
/ 23 сентября 2019

Попробуйте это

function getData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  //  var dataArray = ss.getRange(1, 1, ss.getLastRow(), 1).getValues();
  var dataArray = [[0],[1],[2],[3]]
  var dataUnit;
  var data = [];
  for (var i = 0; i < dataArray.length; i++) {
    dataUnit = dataArray[i].toString();
    data.push(dataUnit);
  }
  ss.appendRow(data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...