const converter = {
"m": {
"cm": {k:0.01 },
"in": {k:0.254 },
"ft": {k:0.3048 },
},
"cm": {
"m": {k:100 },
"in": {k:2.54 },
"ft": {k:30.48 },
},
"in": {
"m": {k:39.3701 },
"cm": {k:0.393701 },
"ft": {k:12 },
},
"ft": {
"m": {k:3.28084 },
"cm": {k:0.328084 },
"in": {k:0.833333 },
},
};
// ...
sum = converter[unit]&&converter[unit][inUnit]&&converter[unit][inUnit]["k"] ? +inValue*converter[unit][inUnit]["k"]: NaN;
/**
* Разворачивает данные в плоскую таблицу
*
* @author Boew Grigory (ff.nspu@gmail.com)
* @param {Array} data Исходные данные
* @param {Boolean} [isRemoveNull=true] Удалять ли из выдачи пустые, нулевые и ложные значения
* @customfunction
*/
function unPivot(data, isRemoveNull=true) {
let colHeaders = [...(data[0])].slice(1);
let rowHeaders = data.slice(1).map(row=>row[0]);
let outData = [];
rowHeaders.forEach((rowHeader,ri)=>{
colHeaders.forEach((colHeader,ci)=>{
let value = data[1+ri][1+ci];
if(!isRemoveNull || value){
outData.push([rowHeader, colHeader, value]);
};
});
});
if(!outData.length){
return [[]];
};
return outData;
};
Из этих трех таблиц, собирается одна, ... и вручную проставляются фактические даты и тип счета.
function _onEdit(e) {
let sheet = e.source.getActiveSheet();
let address = e.range.getA1Notation().toUpperCase();
let row = e.range.getRow();
let col = e.range.getColumn();
let newValue = e.value;
let oldValue = e.oldValue;
if ((["1"].includes(sheet.getName())) && (col===26) && (newValue==="Обработано")) {
sheet.getRange(row, 26-2).setValue(new Date());
};
};