首页 > 解决方案 > 用于填充电子表格列的一维数组

问题描述

我正在使用内置的组服务来提取用户名列表......

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

...它返回一个数组,像这样...

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

我希望这些电子邮件显示在这样的电子表格列中...... 电子表格 A 列中的电子邮件地址。 每个值都在单独的行中。

Apps Script 的 .setValues() 似乎需要一个 2D 数组,即使数据是“平坦的”,所以我从测试中得到的印象是我的数据必须采用这样的格式......

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

如果我希望它显示为数据行而不是列中的一项。

如果我是正确的,我想我正在寻找我的问题的两个(可能是三个)可能答案中最好的一个。

我认为可能的解决方案

  1. 转换数组并使数组中的每个项目成为可能带有 for 循环的单项数组

  2. 发现有一个更好的内置函数可以将数组转换成一行数据

  3. 还有一些我可以做的事情,我什至没有在这里考虑

标签: google-apps-scriptgoogle-sheets

解决方案


如果您不想循环,您也可以使用工作表 API。

使用Advanced Google services并切换 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];});

推荐阅读