Veronika Portfoolio

LOOVÜLESANNE

Генерация случайных паролей в 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];
}

Изменения в коде для улучшения его работы:

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