1D массив для заполнения столбца электронной таблицы - PullRequest
0 голосов
/ 31 октября 2018

Я использую встроенный групповой сервис для получения списка имен пользователей ...

function getUsersInGroup(group) {
  var usersInGroup = GroupsApp.getGroupByEmail(group).getUsers();
  return usersInGroup;
}

... и возвращает массив, как этот ...

[ person1@email.com, person2@email.com, person3@email.com ]

Я хотел бы, чтобы эти электронные письма отображались в столбце электронной таблицы, как это ... Email addresses in column A of a spreadsheet. Each value is in a separate row.

Похоже, что .setValues ​​() приложения Script требует двумерного массива, даже когда данные "плоские", поэтому из моих тестов складывается впечатление, что мои данные должны быть в таком формате ...

var data = [[person1@email.com],[person2@email.com],[person3@email.com]]

Если я хочу, чтобы он отображался в виде строк данных вместо одного элемента в столбце.

Если я прав, думаю, я ищу лучший из двух (возможно, трех) возможных ответов на мой вопрос.

Что я думаю, Возможные решения

  1. Преобразуйте массив и сделайте каждый элемент в массиве одним элементом с, вероятно, для цикла

  2. Узнайте, что есть лучшая встроенная функция, которая примет массив и превратить его в ряд данных

  3. Есть еще кое-что, что я мог бы здесь даже не рассмотреть

Ответы [ 2 ]

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

Как отметил @TheMaster, простой цикл с функцией map работал хорошо. Вот что я сделал:

function writeArrayToColumn(array) {
  var mainSheet = SpreadsheetApp.getActiveSheet(); 

  var newArray = array.map(function (el) {
    return [el];
  });

  var range = mainSheet.getRange(2, 1, newArray.length, 1);

  range.setValues(newArray);
}
0 голосов
/ 01 ноября 2018

Вы также можете использовать API листов, если вы не хотите проходить по нему.

Использование Расширенные службы Google и переключение MajorDimension в виде столбцов:

  var data = [ 'person1@email.com', 'person2@email.com', 'person3@email.com' ];
  var request = {
    range: 'Sheet1!A1',
    majorDimension: 'COLUMNS',
    values: [data], //still 2D
  };
  //API must be enabled before use. 
  //https://developers.google.com/apps-script/advanced/sheets
  Sheets.Spreadsheets.Values.update(request, ss.getId(), request.range, {
    valueInputOption: 'USER_ENTERED',
  });

Или выполнить цикл:

data = data.map(function(e){return [e];});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...