Задать значения в столбце на листе из массива 1d - PullRequest
0 голосов
/ 10 января 2020

У меня есть скрипт, который собирает полные имена, содержащиеся в почтовой группе. Идея состоит в том, чтобы в выпадающем списке был обновленный список членов команды.

Он работает правильно, но я не могу получить его до setValues() Все, что я пробовал, либо выводит только одно имя из списка, все значения в одной ячейке, либо не работает. Я думаю, что это связано с тем, что это одномерный массив, но я могу ошибаться.

Вот что у меня есть:

function listGroupMembers() {
  var GROUP_EMAIL = "email@email.com";
  var group = GroupsApp.getGroupByEmail(GROUP_EMAIL);
  var users = group.getUsers();
  var str = "Group " + GROUP_EMAIL + " has " + users.length +  " members: ";
  var valueRange=[];
  valueRange[0]=[];
for (var i = 0; i < users.length; i++) {
    var user = users[i];
    var email = user.getEmail();
    var contact =  ContactsApp.getContact(email);
    if(contact!=null){
    valueRange[i]=[];
      valueRange[i].push (contact.getFullName());
      }
  }
  var sheet = SpreadsheetApp.getActive().getSheetByName("sheet name");
  var numberRows = valueRange.length;
  var range = sheet.getRange(1, 1, numberRows, 1);
  range.setValues(valueRange);
}

Я борюсь с тем, чтобы получить эти значения в Column1, Row1, на моем листе следующим образом в отдельных ячейках:

Имя 1
Имя 2
Имя 3
Имя 4

Массив выглядит следующим образом: [Имя 1, Имя 2, Имя 3, Имя 5 и т. Д.]

Пожалуйста, помогите, надеюсь, все это имеет смысл!

1 Ответ

1 голос
/ 10 января 2020

Чтобы вывести ваши значения в диапазон значений и присвоить этот диапазон значений строке:

На основе предоставленного вами кода выполните следующую модификацию:

function listGroupMembers() {
  var GROUP_EMAIL = "emailgroup@email.com";
  var group = GroupsApp.getGroupByEmail(GROUP_EMAIL);
  var users = group.getUsers();
  var str = "Group " + GROUP_EMAIL + " has " + users.length +  " members: ";
  var valueRange=[];
  valueRange[0]=[];
  for (var i = 0; i < users.length; i++) {
    var user = users[i];
    var email = user.getEmail();
    var contact =  ContactsApp.getContact(email);
valueRange[i]=[];
    if(contact!=null){
      valueRange[i].push (contact.getFullName());
    }else{
      valueRange[i].push ("");
    }
  }
  var sheet = SpreadsheetApp.getActive().getSheetByName("INSERT HERE THE NAME OF YOUR SHEET");
  var numberColumns = valueRange[0].length;
  var range = sheet.getRange(1, 1, 1, numberColumns);
  range.setValues(valueRange);
}

Объяснение:

  • setValues() ожидают двумерный диапазон значений, который представляет собой вложенный массив с измерениями [numberRows] [numberColumns]. Для строки это двумерный массив с высотой 1 и шириной, соответствующей количеству ваших значений. Для столбца это будет с точностью до наоборот.
  • pu sh () - это метод Javascript, полезный для заполнения элементов массива диапазона значений вашими значениями

Для вставки значений по вертикали (в один столбец) вместо горизонтали - l oop через строки вместо столбцов. Образец:

for (var i = 0; i < users.length; i++) {
    var user = users[i];
    var email = user.getEmail();
    var contact =  ContactsApp.getContact(email);
valueRange[i]=[];
    if(contact!=null){
      valueRange[i].push (contact.getFullName());
    }else{
      valueRange[i].push ("");
    }
  }
  var sheet = SpreadsheetApp.getActive().getSheetByName("INSERT HERE THE NAME OF YOUR SHEET");
  var numberRows = valueRange.length;
  var range = sheet.getRange(1, 1, numberRows, 1);
  range.setValues(valueRange);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...