• Как изменить условие в скрипте для удаление строки по условию?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Код довольно странный, и его трудно к чему-то привязать, но самое простое - это

    function onEdit(e) {
      Logger.log(e);
      Logger.log(e.value);
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheetS = ss.getSheets()[2];
      var sheetD = ss.getSheets()[3];
      var lastColumn = sheetS.getLastColumn();
      var lastRow = sheetD.getLastRow();
      if (e.range.getColumn() == 23 && e.value == 1) {
        var range = e.range;
        var row = range.getRow();
        Logger.log(row);
        var val = sheetS.getRange(row, 1, 1, lastColumn).getValues();
        sheetD.getRange(lastRow + 1, 1, 1, lastColumn).setValues(val);
        sheetS.deleteRow(row);
      }
    }


    См. if (e.range.getColumn() == 23 && e.value == 1) {
    Ответ написан
    1 комментарий
  • Как выделить всю строку через Скрипт?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Чтобы не слетало форматирование, не используйте
    ws.getRange(2, 1, 1000, ws.getLastColumn()).clearFormat();

    Чтобы забиндить скрипт на сочетание клавиш - пишите макрос и назначайте. Там сочетания вида Ctrl+Alt+Shift+N
    Или можно подправить appsscript.json
    //...
      "sheets": {
        "macros": [{
          "menuName": "macros1",
          "functionName": "myFunction",
          "defaultShortcut": "Ctrl+Shift+Alt+1"
        }]
      }
      //...

    Также возможно что просто код не выполняется(ошибка), попробуйте это:
    function onSelectionChange() {
      let ss = SpreadsheetApp.getActiveSpreadsheet();
      let as = ss.getActiveSheet();
      let ac = as.getActiveCell();
      let row = ac.getRow();
    
      as.getRange(row+":"+row).setBackground("yellow");
    }
    Ответ написан
    Комментировать
  • Как сделать взаимосвязанные выпадающие списки в Google Sheets?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Нужно обрабатывать событие onEdit(), причём надо назначить полноценный триггер на это.
    Заготовка кода для onEdit()
    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;							//Старое значение
    	
      if (["Лист1","Лист2"].indexOf(ss.getName())==-1) return;	//Указываем на каких листах должен работать скрипт
    	
    	//Что-то делаем...
      };
    Ответ написан
    5 комментариев
  • Автоматическое создание checkbox в google sheets, как сделать?

    shebanits
    @shebanits
    function onEdit(e) {
      let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      let row = e.range.getRow();
      let column = e.range.getColumn();
      let value = e.source.getActiveSheet().getRange(row, 1).getValue();
      let checkbox = SpreadsheetApp.newDataValidation().requireCheckbox().setAllowInvalid(false).build();
    
      if (column == 1 && value !== "") {
        sheet.getRange(row, 2).setDataValidation(checkbox).setValue(false);
      }
    
    }
    Ответ написан
    3 комментария