@SerWant7

Редактировать скрипт для переноса активных данных столбца?

Здравствуйте.
Прошу помощи в создании скрипта.
Есть гугл-таблица: https://docs.google.com/spreadsheets/d/1xexWjIPTCp...

У данной таблицы есть лист "Список проектов с параметрами для ТПА". На нем есть несколько разделов данных, которые участвуют в коде:
- "Параметры проекта" - ключевыми данными для скрипта является выпадающий список в колонке "С" - "Статус" (с вариантами "Не в работе", "В работе", "Выполнено"). А также колонка "D" - "Проект (ПФ)";
- "Параметры ТПА, которое подходит под ПФ" - ключевыми данными для скрипта является данные в колонке "M" - "Оборудование".

С помощью кода должны импортироваться данные на лист "ЭкспортОчередиПФНаТПА"

Т. е. например сейчас:
1) При выборе статуса "В работе" в ячейке "С4" на лист "Экпорт...", попадает: - статус "В работе" из ячейки "С4"; - Проект (ПФ) "винт др" из ячейки "D4"; - Оборудование "HJ-328" из ячейки "M4".
2) При выборе статуса "В работе" в ячейке "С5" на лист "Экпорт...", попадает: - статус "В работе" из ячейки "С5"; - Проект (ПФ) "ниппель" из ячейки "D5"; - ДОЛЖНО ПОПАДАТЬ Оборудование "Tederic D 130" из ячейки "M5", но попадает "HJ-328" из ячейки "M4". Как сделать так, что бы попадало значение из нужной ячейки?
3) И т.д.

Сам код:

function onEdit(e) {

    var range = SpreadsheetApp.getActive().getActiveRange(); // чтобы придать тип Range переменной - для появления списка методов по точке
    range = e.range; // а здесь просто переопределяем
    var sheet = SpreadsheetApp.getActive().getActiveSheet(); // чтобы придать тип Sheet переменной - для появления списка методов по точке
    sheet = range.getSheet(); // а здесь просто переопределяем

    var idxAddr = ["C4","C5","C6","C7","C8","C9","C10","C11","C12","C13","C14","C15","C16","C17","C18","C19","C20","C21","C22","C23","C24","C25","C26","C27","C28","C29","C30","C31","C32","C33","C34","C35","C36","C37","C38","C39","C40","C41","C42","C43","C44","C45","C46","C47","C48","C49","C50"].indexOf(range.getA1Notation()); // ячейки листа детали, где должно срабатывать
  
    if (~idxAddr) { // idxAddr > -1
        var idxValue = ["Не в работе","В работе","Выполнено"].indexOf(range.getValue()); // значения статусов срабатывания 
        if (~idxValue) {
            var sheetExport = sheet.getParent().getSheetByName('ЭкспортОчередиПФНаТПА');
            sheetExport.appendRow([ new Date(),
                                    range.offset(0, 1).getValue(),
                                    sheet.getRange("M4").getValue(),
                                    range.getValue()]);
        }
    }   
}


В коде не могу, за не знанием языка, сделать так, что бы учитывались данные всего столбца (а не по каждой ячейке как сейчас) на участке:

var idxAddr = ["C4","C5","C6","C7","C8","C9","C10","C11","C12","C13","C14","C15","C16","C17","C18","C19","C20","C21","C22","C23","C24","C25","C26","C27","C28","C29","C30","C31","C32","C33","C34","C35","C36","C37","C38","C39","C40","C41","C42","C43","C44","C45","C46","C47","C48","C49","C50"].indexOf(range.getA1Notation()); // ячейки листа детали, где должно срабатывать


И не могу сделать так, что бы учитывались данные всего столбца на участке:

sheet.getRange("M4").getValue(),

Помогите сделать то, что мне не под силу.
Т.е. при изменении статуса, на лист "Экспорт.." должны помещаться указанные выше данные.

Благодарю
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Взять данные столбца

const colData = sheet.getRange('C5:C').getValues().map(r => r[0]);


Взять ячейку той же строки со смещением

const eData = range.offest(0, 2);

К сожалению, ваша Таблица недоступна, чтобы дать более точный ответ.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы