Ответы пользователя по тегу Google Apps Script
  • Как добавить сортировку значений по дате?

    @KirillRez Автор вопроса
    Вот к сожалению не силен в структуре программирования, интуитивно понял, что вы установили некую константу, которая определяет диапазон и способ сортировки данных. Дальше для меня начинается более темный лес) Вот я просто взял и скопировал Ваш макрос для сортировки и вставил в файл. Получилось вот так (100% не правильно, но не знаю к сожалению даже куда смотреть)
    let ss = SpreadsheetApp.getActiveSpreadsheet();
    let zakaz_2022 = ss.getSheetByName('2022'); //или как нужно лист назвать
    let zakazOK_2022 = ss.getSheetByName('Выполнено_2022');

    function onEdit(e) {
    let cell = e.range;
    if (cell.getSheet().getSheetName() === zakaz_2022.getSheetName()){ // проверка на то, что изменение происходит именно на листе со списком заявок
    if (cell.getValue() === 'Отгружен'){
    zakaz_2022.getRange(cell.getRow(), 1, 1, zakaz_2022.getLastColumn()).copyTo(zakazOK_2022.getRange(zakazOK_2022.getLastRow() + 1, 1)); //перенос на другой лист
    zakaz_2022.deleteRow(cell.getRow()); // удаление строки из листа
    }
    }
    }
    function sortSheets() {
    const rangesInfo = [
    {sheet: "2022", range: "A2:M", column:3, ascending: true},
    {sheet: "Выполнено_2022", range: "A2:M", column:3, ascending: true},
    ];

    let ss = SpreadsheetApp.getActiveSpreadsheet();
    rangesInfo.forEach(rangeInfo=>{
    try{
    let range = ss.getSheetByName(rangeInfo.sheet).getRange(rangeInfo.range);
    range.sort({column: rangeInfo.column, ascending: rangeInfo.ascending});
    }catch(err){
    Logger.log(`error: ${err}`);
    };
    });
    }

    Сейчас получается макрос "говорит" google-шитс что есть 2 функции (onEdit и sort) и типа нужно выполнить сначала одну функцию, потом другую.
    При выполнении ругается
    "TypeError: Cannot read property 'range' of undefined
    onEdit @ Перенос.gs:6"
    Ответ написан
  • Как сделать перенос строки с одной таблицы в другую?

    @KirillRez
    let ss = SpreadsheetApp.getActiveSpreadsheet();
    let vkladka1 = ss.getSheetByName('1'); //или как нужно лист назвать
    let vkladka2 = ss.getSheetByName('2');

    function onEdit(e) {
    let cell = e.range;
    if (cell.getSheet().getSheetName() === vkladka1.getSheetName()){ // проверка на то, что изменение происходит именно на листе со списком заявок
    if (cell.getValue() === 'Готово'){
    vkladka1.getRange(cell.getRow(), 1, 1, vkladka1.getLastColumn()).copyTo(vkladka2.getRange(vkladka2.getLastRow() + 1, 1)); //перенос на другой лист
    vkladka1.deleteRow(cell.getRow()); // удаление строки из листа
    }
    }
    }
    Ответ написан
    Комментировать