@Smouke

Как запустить несколько скриптов в гугл таблицах?

Здравствуйте, есть два скрипта для гугл таблиц
1) Авто проставление даты, когда в другой ячейке появляется любое значение
2) Добавление выпадающего списка товаров в ячейку, когда в другой ячейке появляется определенная категория
По отдельности они работают, но когда пытаюсь их запустить вместе, то работает только второй скрипт. Пробовал в двух разных файлах прописывать скриты и в одном

Также пытался ограничить второй скрипт на один лист в 17 строчке(Иначе он работает на все листы), но скрипт просто перестает работать

В чем может быть проблема?

//Авто проставление даты
function onEdit(e) {
  
  var str = e.range.getRow();
  var stolb = e.range.getColumn();
  
  if (stolb == 4 && e.source.getActiveSheet().getName() == "Order"){
     e.source.getActiveSheet().getRange(str,2).setValue(new Date());
     }
  
  
}

//Зависимые выпадающие списки
function onEdit() {
//Попытка ограничить листы  
//if (ss.getActiveSheet().getName()==="Order"){ 
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName("Order");
let sheetDb = ss.getSheetByName("Range");

let ar = sheet.getActiveCell();
if(ar.getColumn()!==6){return}
let valToFind = ar.getValue();
//Удаление записи при изменении товара
//ar.offset(0, 2).clearContent().clearDataValidations();
let values = sheetDb.getRange(1,1,1,sheetDb.getLastColumn()).getValues();

let col = values[0].indexOf(valToFind)+1;
console.log(col);
let range = sheetDb.getRange(3, col, 30, 1);
console.log(range);
let validation = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();

//shet.getRange(ar.getRow(), 8).setDataValidation(validation)
ar.offset(0, 2).setDataValidation(validation);

}
  • Вопрос задан
  • 582 просмотра
Решения вопроса 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
В Apps Script нельзя использовать функции с одинаковыми названиямию В Вашем случае это "onEdit"
Нужно свести обе функции в одну.
В начале функции, на основании:
e.source.getActiveSheet().getName(); // Название листа где было изменение
e.range.getRow(); // Строка, в которой произошло изменение
e.range.getColumn(); // Столбец в котором произошло изменение

нужно направить выполнение скрипта по первому или второму алгоритму.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы