Как я могу создать 2d-массив списка команд и имен компаний, чтобы я мог просмотреть его?

#javascript #google-apps-script #google-sheets #multidimensional-array

Вопрос:

У меня есть эта электронная таблица, заполненная некоторой информацией о каждом сотруднике, которую я должен перенести в другие электронные таблицы. Каждая электронная таблица будет содержать различную комбинацию имен сотрудников и информации в зависимости от того, в какой команде я работаю.

Информация о команде выглядит так:

Команда 1 — 5 имен

Команда 2 — 3 названия

Команда 3 — 7 имен

.

.

.

У меня есть около 20 команд, над которыми мне нужно поработать.

Я думаю, что понял, как использовать циклы для и если, чтобы получить необходимую мне информацию и скопировать эти строки в новую электронную таблицу. Я делаю это, находя ячейку, соответствующую «имени сотрудника» в моем массиве, а затем копирую информацию в этой строке.

Проблема, с которой я сталкиваюсь, заключается в том, как создать 2d-массив, в котором хранятся все имена, чтобы я мог перебирать их (тем более, что строки не одинаковой длины).

Кто-нибудь знает, как это сделать?? Спасибо!

Комментарии:

1. Используйте объект: и т.д. { team1: [ array of name ], team2: [ array of names] }

2. Когда вы используете getValues() в текущей электронной таблице, у вас будут все данные на листе в виде массива массивов. На этом этапе вы можете использовать метод отображения массивов для создания нескольких различных массивов, которые затем могут быть сохранены на нескольких разных листах с использованием setValues(); Без определенного представления вашей электронной таблицы и более подробной информации трудно предоставить какую-либо более конкретную информацию.

Ответ №1:

Легко

 var teamOne = ["names","names","names","names"];
var teamTwo = ["names2","names2","names2","names2"];
var teamThree = ["names3","names3","names3","names3"];

var teams = [teamOne ,teamTwo ,teamTheree]; 
 

а затем команды цикла

Ответ №2:

Этого можно достичь, создав объект, в котором имена команд являются ключами, а члены команды-значениями.

 const company = {
  team1: ["name", "name2", "name3"],
  team2: ["name4", "name7"],
  team1: ["name5", "name8", "name6"]
}
 

Затем вы можете использовать комбинации Object.prototype.keys и/или Object.prototype.values по мере необходимости

Ответ №3:

Загрузка различных целевых листов с одного исходного листа

Использование различных наборов данных для каждого целевого листа.

 function differentliststodifferentsheets() {
  const ss = SpreadsheetApp.getActive();
  const ssh = ss.getSheetByName('Sheet1');
  const svs = ssh.getRange(1, 1, ssh.getLastRow(), ssh.getLastColumn()).getValues();
  const sh123 = ss.getSheetByName('Sheet2');
  sh123.clear();
  const sh145 = ss.getSheetByName('Sheet3');
  sh145.clear();
  let vs123 = [];
  let vs145 = [];
  svs.forEach((r, i) => {
    vs123.push([r[0],r[1],r[2]]);
    vs145.push([r[0],r[3],r[4]]);
  });
  sh123.getRange(1,1,vs123.length,vs123[0].length).setValues(vs123);
  sh145.getRange(1,1,vs145.length,vs145[0].length).setValues(vs145);
  Logger.log(JSON.stringify(vs123));
  Logger.log(JSON.stringify(vs145));
}
 

Лист1:

COL1 COL2 COL3 COL4 COL5
1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 2,5
3,1 3,2 3,3 3,4 3,5
4,1 4,2 4,3 4,4 4,5
5,1 5,2 5,3 5,4 5,5
6,1 6,2 6,3 6,4 6,5
7,1 7,2 7,3 7,4 7,5
8,1 8,2 8,3 8,4 8,5
9,1 9,2 9,3 9,4 9,5
10,1 10,2 10,3 10,4 10,5

Лист2:

COL1 COL2 COL3
1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3
4,1 4,2 4,3
5,1 5,2 5,3
6,1 6,2 6,3
7,1 7,2 7,3
8,1 8,2 8,3
9,1 9,2 9,3
10,1 10,2 10,3

Лист3:

COL1 COL4 COL5
1,1 1,4 1,5
2,1 2,4 2,5
3,1 3,4 3,5
4,1 4,4 4,5
5,1 5,4 5,5
6,1 6,4 6,5
7,1 7,4 7,5
8,1 8,4 8,5
9,1 9,4 9,5
10,1 10,4 10,5