if ( Value == "" ) {
к решению нижеvar COLUMNS = [5,7,10,13,16]; // Колонки, которые редактируются
function onEdit(e) {
var sheet = e.range.getSheet();
var idCol = e.range.getColumn();
// Мы на нужном листе и на нужной колонке?
if ( COLUMNS.indexOf(idCol) > -1 && sheet.getName() =='Лист1' ) {
e.range.offset(0, 1).setValue( new Date() );
}
}
.offset(0, +2)
???getDate();
- Зачем это вообще?sheet.getRange(idRow, 6).setValue( vartoday );
Чем тут offset
не угодил?/**
*
*/
function runSheet() {
var spec = ['Мой супер лист'];
var spreadsheet = SpreadsheetApp.openById(
'ABCD1234'
).copy('tmp');
spec.forEach(function(sheetName) {
var dr = spreadsheet.getSheetByName(sheetName).getDataRange();
dr.setValues(dr.getValues());
});
spreadsheet.getSheets().forEach(function(sheet) {
if (spec.indexOf(sheet.getName()) < 0) spreadsheet.deleteSheet(sheet);
});
var spreadsheetId = spreadsheet.getId();
var file = exportSpreadsheetToFile_(spreadsheetId, 'xlsx');
DriveApp.getFileById(spreadsheetId).setTrashed(true);
return file;
}
exportSpreadsheetToFile_
можно найти тут.MailApp.sendEmail({
to: "recipient@example.com",
subject: "Logos",
attachments: [runSheet().getBlob()]
});
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) {
// Работает простой триггер
}