Генерация случайных паролей в Google Sheets с использованием Apps Script
Этот скрипт позволяет генерировать безопасные случайные пароли прямо в Google Таблицах.
Можно использовать для:
- .Автоматизации процессов, где требуются уникальные строки
- Создания временных паролей для новых сотрудников
- Генерации ключей доступа для клиентов
Источник:
Оригинальный код:
function GENERATE_PASSWORD(len) {
const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"; //!@#$%^&*() при желании можно эти символы не добавлять
let password = "";
for (let i = 0; i < len; i++) {
const randomIndex = Math.floor(Math.random() * charset.length);
password += charset.charAt(randomIndex);
}
return password;
}


Вот подробное описание работы этой функции:
const charset = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()”;: Эта строка определяет набор символов, из которого будет сгенерирован пароль. Набор символов включает в себя заглавные и строчные буквы, цифры (0-9) и набор специальных символов, таких как !, @, #, $, %, ^, & и *.
let password = ”;: Эта строка инициализирует пустую строку с именем password, которая будет использоваться для создания сгенерированного пароля.
Функция использует цикл for для итерации len раз. Этот цикл отвечает за генерацию пароля указанной длины:
для (let i = 0; i < len; i++) {
// …
}
Внутри цикла выбирается случайный символ из строки набора символов. Это делается путем генерации случайного индекса между 0 и длиной строки набора символов:
const randomIndex = Math.floor(Math.random() * charset.length);
Функция Math.random() генерирует случайное десятичное число от 0 до 1, которое затем умножается на длину набора символов. Math.floor() используется для округления этого результата до целого числа, гарантируя, что это допустимый индекс.
Символ со случайным индексом в строке набора символов добавляется к строке пароля:
password += charset.charAt(randomIndex);
На этом этапе к строке пароля добавляется случайно выбранный символ.
После того, как цикл выполнится len раз и строка пароля будет сформирована из случайных символов, функция возвращает сгенерированный пароль.
Чтобы использовать эту функцию, вы можете вызвать ее с желаемой длиной и сохранить результат в переменной:
const generatedPassword = GENERATE_PASSWORD(12);
Переменная generatedPassword будет содержать случайно сгенерированный пароль длиной 12 символов на основе символов в наборе символов. Эта функция полезна для создания безопасных, рандомизированных паролей для различных приложений.
Улучшенный код:
// Custom formula to generate random passwords
function GENERATE_PASSWORD(length, includeSymbols, passwordCount) {
// Проверяем, если параметры не переданы, устанавливаем значения по умолчанию
if (!length || length < 1) {
length = 8; // Значение по умолчанию для длины пароля
}
if (!passwordCount || passwordCount < 1) {
passwordCount = 1; // Значение по умолчанию для количества паролей
}
// Определяем набор символов, из которых будем генерировать пароли
var charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var symbols = "!@#$%^&*()"; // Список специальных символов
// Проверяем значение includeSymbols
if (includeSymbols && typeof includeSymbols === 'string' && includeSymbols.toLowerCase() === "yes") {
charset += symbols; // Добавляем специальные символы, если указано "yes"
}
// Массив для хранения сгенерированных паролей
var passwords = [];
// Генерируем указанное количество паролей
for (var i = 0; i < passwordCount; i++) {
var password = "";
// Генерируем пароль с указанной длиной
for (var j = 0; j < length; j++) {
// Генерация случайного индекса
var randomIndex = Math.floor(Math.random() * charset.length);
// Добавляем случайный символ в строку пароля
password += charset.charAt(randomIndex);
}
// Добавляем сгенерированный пароль в массив
passwords.push(password);
}
// Если паролей несколько, возвращаем их через запятую
return passwordCount > 1 ? passwords.join(", ") : passwords[0];
}


Изменения в коде для улучшения его работы:
- Параметры по умолчанию: Если не указаны длина пароля или количество паролей, то они автоматически получают значения по умолчанию (длина 8 символов, количество паролей 1).
- Проверка на включение символов: Если в параметре
includeSymbols
указано “yes”, то в пароль добавляются специальные символы, иначе — нет. - Генерация нескольких паролей: Теперь, если указано больше 1 пароля, они генерируются и выводятся через запятую в одной ячейке.