A1
https://docs.google.com/spreadsheets/d/1nleri9Tedl.../**
*
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet
*/
function protectSheet_(sheet) {
var protection = sheet.protect().setDescription('Autoprotection');
var unprotected = sheet.getRangeList(getCommonNotasList_()).getRanges();
protection.setUnprotectedRanges(unprotected);
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
protection.addEditors(editors);
if (protection.canDomainEdit()) protection.setDomainEdit(false);
};
var getCommonNotasList_ = function() {
var a1Notations = [
'B2:B4',
'B6:B7',
'A14:E30',
'I3:Q26',
'S2:V21',
'T33:W264'
];
return a1Notations;
};
userActionsCopyToLogs
уже у себя.=QUERY(
A:D;
"select B, D, sum(C) where B<>'' and A>=date'"&
TEXT(H1;"yyyy-mm-dd")&
"' and A<=date'"&
TEXT(J1;"yyyy-mm-dd")&
"' group by B, D label sum(C)'Количество'";
1
)
=VLOOKUP(A3;INDIRECT(INDEX(SPLIT(B1;"-");1;1) &"!A:C");2;FALSE)
-VLOOKUP(A3;INDIRECT(INDEX(SPLIT(B1;"-");1;2) &"!A:C");2;FALSE)
=ARRAYFORMULA({
VLOOKUP($A$2;INDIRECT(LEFT(B1;5)&"!A:C");{2\3};0);
IFERROR(
VLOOKUP($A$3:$A$40;INDIRECT(RIGHT(B1;5)&"!A:C");{2\3};0)-
VLOOKUP($A$3:$A$40;INDIRECT(LEFT(B1;5)&"!A:C");{2\3};0);
""
)
})
=SUMIF(T2:T13;"="&DATE(2020;1;25);S2:S13)
=ARRAYFORMULA(SUMIF(DATEVALUE(T2:T13);"="&DATE(2020;1;25);S2:S13))
=SUMIFS(S2:S13;T2:T13;">="&DATE(2020;1;25);T2:T13;"<"&DATE(2020;1;26))
=ARRAYFORMULA({UNIQUE(A3:A), TRIM(
REGEXREPLACE(
TRANSPOSE(QUERY(IF(A3:A=TRANSPOSE(UNIQUE(A3:A)),B3:B&", ",""),,TRANSPOSE(ROWS(A3:A)))),
"(^\s+|\s*,\s*$)",
""
)
)})
/**
*
*/
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Custom menu')
.addItem('Copy to logs', 'userActionsCopyToLogs')
.addToUi();
}
/**
*
*/
function userActionsCopyToLogs() {
var headers = ['Name', 'Number'];
var from = SpreadsheetApp.getActiveSheet();
if (from.getName() !== 'Sheet1') {
SpreadsheetApp.getActive().toast('Activate a range on "Sheet1"');
return;
}
var fromValues = from.getDataRange().getValues();
var fromHeaders = fromValues[0].map(function(h) {
return headers.indexOf(h);
});
var activeRange = SpreadsheetApp.getActiveRange();
var rowStart = activeRange.getRow();
var rowEnd = activeRange.getLastRow();
var fromData = fromValues
.filter(function(row, i) {
return i >= rowStart - 1 && i <= rowEnd - 1;
})
.map(function(row) {
return row.filter(function(_, j) {
return fromHeaders[j] > -1;
});
});
var to =
SpreadsheetApp.getActive().getSheetByName('Logs') ||
SpreadsheetApp.getActive().insertSheet('Logs');
to.getRange(to.getLastRow() + 1, 1, fromData.length, fromData[0].length)
.setValues(fromData)
.activate();
}
var headers = ['Name', 'Number'];
так, чтобы копировались данные из нужных вам колонок.Navigation | |
---|---|
Move focus out of editing area | Ctrl+Alt+Shift+M |
Move to beginning of sheet | Ctrl+Home |
Move to end of row | End |
Move to end of sheet | Ctrl+End |
Move to next comment | Ctrl+Alt+N Ctrl+Alt+C |
Move to next edit | Ctrl+Alt+K or Ctrl+Alt+N Ctrl+Alt+R |
Move to next sheet | Ctrl+Shift+Pg-Down or Alt+↓ |
Move to previous comment | Ctrl+Alt+P Ctrl+Alt+C |
Move to previous edit | Ctrl+Alt+J or Ctrl+Alt+P Ctrl+Alt+R |
Move to previous sheet | Ctrl+Shift+Pg-Up or Alt+↑ |
Move to start of row | Home |
потом осуществлять последующую обработку
{ }
или с помощью скриптов.QUERY
не поддерживает ее. Поэтому необходимо строить массив уже готовых значений и работать с ним. Например, добавить "шт." в текущий массив=QUERY(
{'ТЕСТ'!A7:P\ARRAYFORMULA('ТЕСТ'!F7:F & " шт.")};
"Select Col3,Col1,Col2,Col17 Where Col1 like '%' or Col3 like '%'";
)
format
=QUERY('ТЕСТ'!A7:P;"Select C,A,B,F Where A like '%' or C like '%' format F'#.00 шт.'")