SLIPT
кажется рациональной=IFERROR(SPLIT(REPT(B2&"|";A2);"|");"")
=ARRAYFORMULA(IFERROR(SPLIT(REPT(B2:B&"|";A2:A);"|");""))
/**
* @param {GoogleAppsScript.Events.SheetsOnEdit} e
*/
function onEdit(e) {
if (
e.range.getSheet().getName() === 'Sheet1' &&
e.range.getA1Notation() === 'M2'
)
CopyList();
}
/**
*
*/
function CopyList() {
var sss = SpreadsheetApp.openById('ID-ТАБЛИЦЫ1');
var ss = sss.getSheetByName('Sheet1');
var from = ss;
var fromValues = from.getDataRange().getValues();
var fromData = fromValues;
var tss = SpreadsheetApp.openById('ID-ТАБЛИЦЫ2');
var ts = tss.getSheetByName('Sheet2');
ts.getRange(
ts.getLastRow() + 1,
1,
fromData.length,
fromData[0].length
).setValues(fromData);
}
=AND($E1="Female";ISODD(ROW($E1)))
E
, который равен Female
и строка нечетная.onEdit
из другой функции или из редактора.TypeError: Cannot read property 'range' of undefined (строка 3, файл se)
se
в 3й строке
есть некоторая переменная со значением undefined
, свойство range
которой прочитать невозможно. Тут все очевидно - у undefined
нет свойств.e
. И мы ее получаем в системную функцию onEdit
. Это означает, что система сама передает контекст в эту функцию./**
* Тестирование триггера для события EDIT
*/
function runOnEdit() {
var source = SpreadsheetApp.getActive();
var range = source.getRangeByName('Sheet!!B26');
/**
* @type {GoogleAppsScript.Events.SheetsOnEdit}
*/
var e = {
authMode: ScriptApp.AuthMode.LIMITED,
oldValue: undefined, // ну или что хотите
range: range,
value: range.getValue(),
source: source,
triggerUid: 0,
user: Session.getActiveUser(),
};
onEdit(e);
}
/**
*
* @param {GoogleAppsScript.Events.SheetsOnEdit} e
*/
function onEdit(e) {
// Работает простой триггер
}
/**
* User action. Runs the snippet
*/
function run2() {
const sheet = SpreadsheetApp.getActiveSheet();
const base = sheet.getRange('J3:J');
const colFormula = sheet.getRange('J3');
draggDownOneFormula_(base, colFormula);
}
/**
* @param {GoogleAppsScript.Spreadsheet.Range} base
* @param {GoogleAppsScript.Spreadsheet.Range} colFormula
*/
function draggDownOneFormula_(base, colFormula) {
const baseValues = base.getValues();
const lastBase =
baseValues.length - baseValues.reverse().findIndex(row => row[0] !== '');
const colFormulaFormula = colFormula.getFormula();
colFormula
.getSheet()
.getRange(base.getRow(), colFormula.getColumn(), lastBase + 1)
.setFormula(colFormulaFormula);
}
/**
* @file Dragg down a formula
* @url https://qna.habr.com/q/709715
* */
/**
* User action. Runs the snippet
*/
function run() {
const sheet = SpreadsheetApp.getActiveSheet();
const base = sheet.getRange('C3:C');
const colFormula = sheet.getRange('J3');
draggDownFormulas_(base, colFormula);
}
/**
* @param {GoogleAppsScript.Spreadsheet.Range} base
* @param {GoogleAppsScript.Spreadsheet.Range} colFormula
*/
function draggDownFormulas_(base, colFormula) {
const baseValues = base.getValues();
const lastBase =
baseValues.length - baseValues.reverse().findIndex(row => row[0] !== '');
const colFormulaFormula = colFormula.getFormula();
colFormula
.getSheet()
.getRange(base.getRow(), colFormula.getColumn(), lastBase)
.setFormula(colFormulaFormula);
}
C
заполнена на одну строку ниже, чем массив данныхJ3
count
в формуле QUERY