var ss = SpreadsheetApp.getActiveSpreadsheet(); //Текущая таблица
var ss = SpreadsheetApp.openById(id); //открытие сторонней таблицы по id
//или
var ss = SpreadsheetApp.openByUrl(url);//открытие сторонней таблицы по url
=arrayFormula(
еслиошибка(
если(a:a<>""; a:a+b:b; "")
)
)
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; //Указываем на каких листах должен работать скрипт
//Что-то делаем...
};
/**
* Аналог функции split. Разбивает по наличию жирности у текста
* [ ProgrammerForever (c) 2020 ]
* @param {"A1"} rangeName Имя ячейки
* @return Возвращает массив строк с чередующейся жирностью
* @customfunction
*/
function splitByBold(rangeName) {
if (!rangeName) {
throw "Параметр rangeName не задан. Должен быть адресом ячейки"
};
var rtv = SpreadsheetApp.getActiveSheet().getRange(rangeName).getRichTextValue();
if (rtv) {
rtv=rtv.getRuns()
}else{
return SpreadsheetApp.getActiveRange().getValue();
};
var outData = [rtv[0].getText()];
var isBold = rtv[0].getTextStyle().isBold();
var k=0;
for (var i = 1; i < rtv.length; i++){
if (rtv[i].getTextStyle().isBold() === isBold){
outData[k]+= rtv[i].getText();
}else{
k+=1;
outData[k]= rtv[i].getText();
isBold = rtv[i].getTextStyle().isBold();
};
};
return outData;
}
A:A
B:B
ArrayFormula(ЕСЛИ(B:B="Заключен";A:A;""))
=ТРАНСП(ArrayFormula(ЕСЛИ(B:B="Заключен";A:A;"")))
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)
var archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Архив");
archive.getRange(archive.getLastRow()+1, 1).setValue(
formatDateTime(new Date())+" " + "[" + ss.getName() + "!" + address + "] '" + (oldValue==undefined?"":oldValue) + "' >> '" + (newValue==undefined?"":newValue) +"'"
);
};
function formatDateTime(date) {
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;
var hh = date.getHours();
if (hh < 10) hh = '0' + hh;
var MM = date.getMinutes();
if (MM < 10) MM = '0' + MM;
var ss = date.getSeconds();
if (ss < 10) ss = '0' + ss;
return dd + '.' + mm + '.' + yy + ' ' + hh + ':'+ MM + ':'+ ss;
}
.getRange(2, 1, FromData.length, FromData[0].length)
={1;2;3}
=СУММ(FILTER($C$2:$C$45;$B$2:$B$45=A47))
=ЕСЛИОШИБКА(СУММ(FILTER($C$2:$C$45;$B$2:$B$45=A47));0)
=GoogleFinance("CURRENCY:USDRUB"; "close"; D2)
/**
* Возвращает rows строк и cols столбцов из array
*
* @param {A:A} array Исходный массив
* @param {10} rows Количество строк. По умолчанию возвращаются все строки
* @param {1} cols Количество столбцов. По умолчанию возвращаются все столбцы
* @return Возвращает rows строк и cols столбцов из array
* @customfunction
*/
function take(array,rows,cols) {
if (!array.map) {return array};
var rows = rows||array.length;
var cols = cols||array[0].length;
if (array.length>rows) {array.length = rows};
return array.map(
function(row){
return row.map?((row.length>cols)?row.splice(cols,row.length-cols):row):row;
}
);
}
var data = ss.getActiveSheet().getRange("A3:A1000").getValues();
data[row][column]
function onOpen() {
//Выполняется при открытии
SpreadsheetApp
.getUi()
.createMenu('Меню')
.addItem('Выполнить','doIt')
.addToUi();
};
function doIt() {
try{
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); //Текущий лист
var data1 = ss.getRange("A3:E" + ss.getMaxRows()).getValues();
var data2 = ss
.getRange("m4:n" + ss.getMaxRows())
.getValues()
.filter(function(row) // Убираем пустые строки
{
return row[0]!="";
}
);
for (var row2=0;row2<data2.length;row2++){
for (var row1=0;row1<data1.length;row1++){
if (data1[row1][0]===data2[row2][0]){
data1[row1][4]+=data2[row2][1];
break; //Если значение найдено, дальше не ищем
};
};
};
ss.getRange("A3:E" + ss.getMaxRows()).setValues(data1); //Вывод данных
SpreadsheetApp.getActive().toast("Готово!");
}catch(e){ //Если вдруг ошибка
Logger.log("Ошибка! " + e);
};
}