Можно ли заполнить гугл таблицы используя редактор скриптов?
Я выполняю код в редакторе скриптов, получается вот так 
Получается хорошо, но мне нужно что бы получалось вот так вот:
Возможно ли как то получить такой же результат? Возможно ли в больших количествах? Что бы все данные вводились сразу большой кучей в столбик?
Вот мой код:
/* eslint-disable require-jsdoc */
function myFunction() {
var name1 = new Array(); // Объявление массива name и занесение в него большого количества имён
// Список имен
var RandElement1 = name1[Math.floor(Math.random() * name1.length)]; // Выбор случайного элемента из массива
//message.channel.send(RandElement) // Отправка сообщения со случайным элементом из массива в чат
var name2 = new Array(); // Объявление массива name и занесение в него большого количества имён
// Список фамилий
var RandElement2 = name2[Math.floor(Math.random() * name2.length)]; // Выбор случайного элемента из массива
//message.channel.send(RandElement) // Отправка сообщения со случайным элементом из массива в чат
var name5 = new Array(`1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`);
var RandElement5 = name5[Math.floor(Math.random() * name5.length)];
var name6 = new Array(`1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`);
var RandElement6 = name6[Math.floor(Math.random() * name6.length)];
var name7 = new Array(`1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`);
var RandElement7 = name7[Math.floor(Math.random() * name7.length)];
function textTransform(text) {
var arrru = [
// Список символов для подстановок
];
var arren = [
// Список символов транслита
];
var reg = new RegExp('[^' + arrru.join('') + 'a-zA-Z]', 'g');
text = text.replace(reg, '');
for (var i = 0; i < arrru.length; i++) {
var reg = new RegExp(arrru[i], 'g');
text = text.replace(reg, arren[i]);
}
return text;
}
console.log(
RandElement1 +
` ` +
RandElement2 +
` ` +
textTransform(RandElement1 + RandElement2) +
RandElement5 +
RandElement6 +
` ` +
textTransform(RandElement2) +
RandElement6 +
RandElement5 +
RandElement7
);
}
Полный листинг программы тут https://gist.github.com/contributorpw/8bba4a316492acd1991adcc19f778147
Ответы (1 шт):
Для начала выведите часть код в отдельные файлы проекта
Получает на вход книгу, списки для генерации и количество генераций. По умолчанию использует текущую книгу. Если не передаются списки генерации, то в книге должны быть листы name1, name2.
function generateData_(
book = SpreadsheetApp.getActive(),
names1 = [],
names2 = [],
count = 1
) {
const name1 = names1.length
? names1
: book
.getRange('name1!A:A')
.getValues()
.map((row) => row[0])
.filter((item) => item !== '');
const name2 = names2.length
? names2
: book
.getRange('name2!A:A')
.getValues()
.map((row) => row[0])
.filter((item) => item !== '');
const name5 = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];
const name6 = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];
const name7 = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];
const data = [];
while (count > 0) {
const randElement1 = name1[Math.floor(Math.random() * name1.length)];
const randElement2 = name2[Math.floor(Math.random() * name2.length)];
const randElement5 = name5[Math.floor(Math.random() * name5.length)];
const randElement6 = name6[Math.floor(Math.random() * name6.length)];
const RandElement7 = name7[Math.floor(Math.random() * name7.length)];
data.push([
`${randElement1} ${randElement2}`,
textTransform_(randElement1 + randElement2) + randElement5 + randElement6,
textTransform_(randElement2) + randElement6 + randElement5 + RandElement7,
]);
count--;
}
return data;
}
Как применять generateData_
Генерирует 100 записей в текущей книге
const data1 = generateData_(undefined, undefined, undefined, 100);
Генерирует 10 записей в переданной книге
const data1 = generateData_(book, undefined, undefined, 100);
Генерирует 1 запись в переданной книге на основе заданных массивов
const data2 = generateData_(book, ['Имя1', 'Имя2'], ['Фамиль1', 'Фамиль2']);
Применяем и вставляем данные в Таблицу
Берет активную книгу и генерирует новые записи на листе Data.
function userActionRun() {
const book = SpreadsheetApp.getActive();
// Генерирует 10 записей
const data1 = generateData_(book, undefined, undefined, 100);
// Генерирует 1 запись из переданных массивов
const data2 = generateData_(book, ['Имя1', 'Имя2'], ['Фамиль1', 'Фамиль2']);
const data = [...data1, ...data2];
if (data.length) {
const sheetData = book.getSheetByName('Data');
if (sheetData.getLastRow() === sheetData.getMaxRows())
sheetData.insertRowAfter(sheetData.getLastRow());
sheetData
.getRange(sheetData.getLastRow() + 1, 1, data.length, data[0].length)
.setValues(data);
}
}
Функцию textTransform_ я менять не стал, но там есть что поправить.
Пример в Таблице https://docs.google.com/spreadsheets/d/1BBObMiYI1TUU2CvQZPXhnX7hXfx8Xyqv1n8dDt9mogw/edit?usp=sharing

