@Jan300385a

Скрипт автоматической подстановки текущей даты?

Здравствуйте. Подскажите пожалуйста скрипт для заполнения даты в колонке А (без перезаписи даты при изменении), при внесении данных в любую ячейку строки. Пример внёс данные в ячейку B2,C2, D2 и.т.д., а в ячейку А2 подставляется текущая дата. Первая строчка это названия колонок, нужно чтобы скрипт работал начиная со строки 2
  • Вопрос задан
  • 316 просмотров
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Как-то так:
// Файл config.gs
const config = {};

config.onEditTrigger = {
  isAllowSheetName: sheetName=>(["Лист1", "Лист2", "Лист3"].includes(sheetName)),  // Лист - "Лист1", "Лист2" или "Лист23"
  isAllowColumn: column=>true, // колонка - любая
  isAllowRow: row=>(row>1), // строка - больше 1
  isAllowNewValue: value=>true, // новое значение - любое
  isAllowOldValue: value=>true, // старое значение - любое
  action: (ss, sheet, range, oldValue, newValue)=>{
	  sheet.getRange(`A${range.getRow()}`).setValue(new Date());
  },
};

// Файл onEdit.gs
function onEditTrigger(event) { // переименовать onEditTrigger в onEdit, если хватит simple триггера. Если нужен полноценный триггер - установить триггер на редактирование на эу функцию
  let conf = config.onEditTrigger;
  let ss = SpreadsheetApp.getActiveSpreadsheet();

  let sourceSheet = event.source.getActiveSheet();
  let row = event.range.getRow();
  let col = event.range.getColumn();
  let newValue = event.value;
  let oldValue = event.oldValue;
  
  if(
     conf.isAllowColumn(col) &&
     conf.isAllowRow(row) && 
     conf.isAllowNewValue(newValue) && 
     conf.isAllowOldValue(oldValue) && 
     conf.isAllowSheetName(sourceSheet.getName())
    ){
      conf.action(ss, sourceSheet, event.range, oldValue, newValue);
  };
};

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

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

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