let now = new Date();
let tomorrow = new Date(+now+24*60*60*1000);
let maxRows = sheet.getMaxRows();
let maxColumns = sheet.getMaxColumns();
let data = sheet.getRange(1, 1, maxRows, maxColumns).getValues();
sheet\.getRange\(\s*(.*?)\s*,\s*(.*?)\s*\)\.getValue\(\)
inData[$1][$2]
function setData(){
/* Боев Григорий (с) 2020 (telegram @ProgrammerForever) */
const FIRST_ROW = 3; // Первая строка
const FIRST_OUT_COL = 10; // Первый столбец, Сентябрь
const FIRST_IN_COL = 7; // Первый столбец с исходными данными
const DATA_WIDTH = 3; // Столбцов с данными
const SHEET_NAME = "Лист1"; // Имя листа
let now = new Date();
let month = now.getMonth();//Либо получаете номер месяца (от 0 до 11) анализируя вашу ячеййку
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
let inRange = sheet.getRange(FIRST_ROW, FIRST_IN_COL, sheet.getMaxRows(), DATA_WIDTH);
let inData = inRange.getValues();
let outRange = sheet.getRange(FIRST_ROW, FIRST_OUT_COL + month*DATA_WIDTH, inData.length, DATA_WIDTH);
outRange.setValues(inData);
};
data>=row[data_col] and data1<row[data_col]
=filter(A:A;B:B>=data;B:B<data1)
//Telegram - @ProgrammerForever
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; //Указываем на каких листах должен работать скрипт
//Можно при желании ещё фильтровать по строке/столбцу (row/col), или по старому/новому значению (oldValue/newValue)
const archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Архив");
archive.getRange(archive.getLastRow()+1, 1).setValue(
formatDateTime(new Date())+" " + "[" + ss.getName() + "!" + address + "] '" + (oldValue==undefined?"":oldValue) + "' >> '" + (newValue==undefined?"":newValue) +"'"
);
};
function formatDate(date) {
try{
var dd = date.getDate();
if (dd < 10) dd = '0' + dd;
var mm = date.getMonth() + 1;
if (mm < 10) mm = '0' + mm;
var yy = date.getFullYear() % 100;
if (yy < 10) yy = '0' + yy;
return dd + '.' + mm + '.' + yy;
}catch(err){
return "";
};
}
if (снизу_пусто){ // сыплется вниз
y+=1
} else if (снизу_слева_пусто && снизу_справа_пусто){// сыплется по диагонали в случайную сторону
y+=1
if (rand()>0.5){
x-=1
}else{
x+=1
}
} else if (снизу_справа_пусто){ // сыплется вправо по диагонали
y+=1
x+=1
} else if (снизу_слева_пусто){ // сыплется влево по диагонали
y+=1
x-=1
}
function onEdit(event) {
//* Боев Григорий (с) 2020 (telegram @ProgrammerForever)
const ss = event.source.getActiveSheet(); // Текущий лист
const row = event.range.getRow(); // Номер строки
const col = event.range.getColumn(); // Номер столбца
const rowsCount = ss.getMaxRows(); // Кол-во строк
const inRange = ss.getRange(1,col,rowsCount,1);
var inData = inRange.getValues(); // Получение значений
inRange.clearContent(); // Удаление старых
inData = inData.filter(row=>row[0].getTime); // Оставить только даты
inData.sort((a,b)=>a[0].getTime()-b[0].getTime()); // Сортировка
ss.getRange(1,col,inData.length,1).setValues(inData); //Вывод
};
=МАКС(FILTER(B:B;A:A=A1))