let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1");
let range = sheet.getRange("b2:b");
range.setValues(range.getValues());
function doProperFirst(sheetName="Лист1") {
let dataRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getDataRange();
let data = dataRange.getValues()
.map(row=>row.map(properFirst));
dataRange.setValues(data);
};
/**
Преобразует первую букву каждого слова в верхний регистр.
@param {string} str - Строка для преобразования.
@returns {string} - Преобразованная строка.
*/
function properFirst(str){
return String(str).split(" ").map(word=>word===""?"":word.charAt(1).toLocaleUpperCase()+word.substring(1)).join(" ");
};
=ЕЧЁТН(ЧСТРОК(unique(ДВССЫЛ("R1:R";0))))
=ArrayFormula(LET(
raw;$A:$A;
r;СТРОКА(ДВССЫЛ("RC";0));
c;СТОЛБЕЦ(ДВССЫЛ("RC";0));
countNotEquals;СУММ(ARRAY_CONSTRAIN(ЕСЛИ({{"";raw}<>{raw;""}};1;0);r;1));
ЕЧЁТН(countNotEquals)
))
=ArrayFormula(let(
symbols;LAMBDA(from;to;ArrayFormula(JOIN(;СИМВОЛ(SEQUENCE(abs(КОДСИМВ(to)-КОДСИМВ(from))+1;1;МИН(КОДСИМВ(from);КОДСИМВ(to)))))));
alphabetEn;symbols("a";"z")&symbols("A";"Z");
alphabetRu;symbols("а";"я")&symbols("А";"Я")&"ёЁ";
specString;"!""№;%:?*()_+@#$%^&*\|/.,-='{}[]<>`~";
numbers;"0123456789";
generate;lambda(fromText;count;join("";ПСТР(fromText;ОКРУГЛВВЕРХ(randarray(count)*ДЛСТР(fromText));1)));
letterEn;lambda(count;ЕСЛИ(count<=0;"";generate(alphabetEn;count)));
letterRu;lambda(count;ЕСЛИ(count<=0;"";generate(alphabetRu;count)));
spec; lambda(count;ЕСЛИ(count<=0;"";generate(specString;count)));
numeric; lambda(count;ЕСЛИ(count<=0;"";generate(numbers ;count)));
shuffle;lambda(txt;join("";array_constrain(SORT({ПСТР(txt;SEQUENCE(ДЛСТР(txt));1)\RANDARRAY(ДЛСТР(txt))};2;1);ДЛСТР(txt);1)));
passw;lambda(enCount;ruCount;specCount;numsCount;
shuffle( letterEn(enCount) & letterRu(ruCount) & spec(specCount) & numeric(numsCount) )
);
passw(2;2;2;2)
))
/**
* Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
* [ ProgrammerForever (c) 2020 ]
* @return Не возвращает значений
*/
function onEdit(event) {
var ss = event.source.getActiveSheet();//Текущий лист
var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
var row = event.range.getRow(); //Номер строки
var col = event.range.getColumn(); //Номер столбца
var newValue = event.value; //Новое значение
var oldValue = event.oldValue; //Старое значение
var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
if((ss.getName==="Лист1")&&(row>=2)&&(col===4)&&(newValue ==="Готово")){ // Все проверки
// Что-то делаем
};
};
/**
* Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
* [ ProgrammerForever (c) 2020 ]
* @return Не возвращает значений
*/
function onEdit(event) {
var ss = event.source.getActiveSheet();//Текущий лист
var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
var row = event.range.getRow(); //Номер строки
var col = event.range.getColumn(); //Номер столбца
var newValue = event.value; //Новое значение
var oldValue = event.oldValue; //Старое значение
var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
//Делаем что-то
if((col>=1)){
ss.getRange(row,1).setValue(new Date()); //Запись даты редактирования строки в столбец 1
};
};
let doc = DocumentApp.openById(docId);