QUERY
=ARRAYFORMULA(
VLOOKUP(DAY(TODAY());A3:K33;{2\3\4\5\6\7\8\9\10\11};)-
VLOOKUP(DAY(TODAY())-1;A3:K33;{2\3\4\5\6\7\8\9\10\11};)
)
function onFormSubmit(e){
UrlFetchApp.fetch(endpoint, {
payload: JSON.stringify(e)
});
}
Основное правило
Проценты и числа - это разные типы данных. Их можно связать через умножение, как действие определения долей, потому что процент является формой десятичной дроби.
if(col1 <> 0 && col2 === 1) {
}
for(){
if(){
continue;
}
}
for(){
if(){
break;
}
}
else if
для группировки проверокif(col1 <> 0) {
} else if(col2 === 1) {
}
/**
* @param { globalThis.SpreadsheetApp.Range } range
*/
function uniqByRow_(range, compact = false) {
const mapper = compact ?
row => {
const uniq = [...new Set(row)];
return row.map((_, i) => uniq[i] ?? '');
} :
row => row.map((cell, i) => row.indexOf(cell) === i ? cell : '');
range.setValues(
range.getValues().map(mapper));
}
function run() {
const book = SpreadsheetApp.getActive();
const range = book.getSheetByName('Данные').getDataRange();
uniqByRow_(range, true);
}
uniqByRow_(range, false)
, то получимfunction run() {
const book = SpreadsheetApp.getActive();
const range1 = book.getRange('Лист1!B4');
const range2 = book.getRange('Лист1!B6');
const joinRichTextValue = new JoinRichTextValue();
joinRichTextValue.separator = { text: '\n' };
joinRichTextValue.push(range1.getRichTextValue());
joinRichTextValue.push(range2.getRichTextValue());
const range = book.getRange('Лист1!B16');
range.setRichTextValue(joinRichTextValue.build());
}
JoinRichTextValue
описан в проекте Таблицы https://docs.google.com/spreadsheets/d/11tjtnmr_F-...=ARRAYFORMULA(VLOOKUP(
R5:R;
QUERY(
SPLIT(FLATTEN(A5:A & "|" & B5:D);"|");
"select Col1, sum(Col2) group by Col1");
2;
))
={A4:A7\{"Сумма";INDEX(
{TRANSPOSE(QUERY(
{TRANSPOSE(B5:E7)};
"select " & "sum(Col" & JOIN("), sum(Col"; SEQUENCE(1;ROWS(A5:A7);1;1)) & ")";
0))}
;;2
)}}
={INDEX(
{TRANSPOSE(QUERY(
{TRANSPOSE(B5:E7)};
"select " & "sum(Col" & JOIN("), sum(Col"; SEQUENCE(1;ROWS(A5:A7);1;1)) & ")";
0))}
;;2
)}
function cleanBook() {
const sheetsForClean = [
{
rangeA1: 'Sheet2!E4:AI140'
},
{
rangeA1: 'Sheet3!E4:AI140'
},
{
rangeA1: 'Sheet4!E4:AI140'
}
];
const book = SpreadsheetApp.getActive();
sheetsForClean.forEach(item => book.getRange(item.rangeA1).clearContent());
}
sheetsForClean
и вызвать функцию. Можно вызвать и через макросы. =QUERY({
FILTER(A1:A24;MOD(ROW(A1:A24);4)=2)\FILTER(A1:A24;MOD(ROW(A1:A24);4)=0)
};
"select sum(Col2) where Col1 contains 'День'";
0)
function getLastRowIndexOfArray_(arr) {
const index = arr.reverse().findIndex(row => row.join('') !== '');
return arr.length - (index === -1 ? arr.length : index);
}
function run() {
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName('Sheet4');
const range = sheet.getRange('G:G');
insertValueToEndOfRange_(range, [[22]]);
}
function insertValueToEndOfRange_(range, values) {
const lastValueRow = getLastRowIndexOfArray_(range.getValues()) + 1;
range.getSheet().getRange(lastValueRow, range.getColumn(), values.length, values[0].length)
.setValues(values);
}