#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 |