Advertisement
Namokonov

Untitled

May 25th, 2022
654
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function onOpen() {
  2.   SpreadsheetApp.getUi()
  3.     .createMenu("> скрипты")
  4.     .addItem("создать список листов на листе 'пульт управления'", "создать_список_листов")
  5.     .addItem("вставить выпадающие списки", "вставить_списки")
  6.     .addToUi()
  7. }
  8.  
  9. function создать_список_листов() {
  10.   const ss = SpreadsheetApp.getActive();
  11.   const workSheet = ss.getSheetByName('Пульт управления');
  12.   const checkBox = SpreadsheetApp.newDataValidation().requireCheckbox().build();
  13.   const arrNames = ss.getSheets().map((sheet) => {
  14.     return [sheet.getName()];
  15.   });
  16.  
  17.   workSheet.getRange("a2:c").clearContent();
  18.   workSheet.getRange(2, 1, arrNames.length, 1).setValues(arrNames);
  19.   workSheet.getRange(4, 2, arrNames.length - 2, 1).setDataValidation(checkBox);
  20. }
  21.  
  22. function вставить_списки() {
  23.   const ss = SpreadsheetApp.getActive();
  24.   const workSheet = ss.getSheetByName('Пульт управления');
  25.   const lastRow = workSheet.getDataRange().getLastRow();
  26.   const workSheetArr = workSheet.getRange(2, 1, lastRow, 3).getValues();
  27.   const mappingSheet = ss.getSheetByName('Значения');
  28.   const rangeValidation = mappingSheet.getRange("A:A").getValues();
  29.   const validation = SpreadsheetApp.newDataValidation().requireValueInList(rangeValidation).build();
  30.  
  31.   workSheetArr.forEach((item) => {
  32.     if (item[1]) {
  33.       const lr = ss.getSheetByName(item[0]).getDataRange().getLastRow();
  34.       const sheet = ss.getSheetByName(item[0]);
  35.       sheet.getRange(2, item[2], lr - 1, 1).setDataValidation(validation);
  36.     }
  37.   });
  38.  
  39. }
  40.  
Advertisement
RAW Paste Data Copied
Advertisement