- Вам необходим оператор
if
, который оценивает, какие ячейки редактируются - Чтобы получить доступ к отредактированной ячейке, вы можете использовать объект события
range
, который возвращает ячейка, которая была отредактирована
Пример:
function onEdit(event){
var cellName = event.range.getA1Notation();
if(cellName == "A1" || cellName == "A2"){
var ss = SpreadsheetApp.getActiveSpreadsheet();//source spreadsheet
...
}
}
ОБНОВЛЕНИЕ:
У вас также есть некоторые другие незначительные ошибки, такие как, например, определение requiredRows.
Ваш полный код будет выглядеть примерно так, при этом вы должны заменить ячейки A1
и A2
через те ячейки, которые вы на самом деле хотели бы посмотреть:
function onEdit(event){
var cellName = event.range.getA1Notation();
if(cellName == "A1" || cellName == "A2"){
var ss = SpreadsheetApp.getActiveSpreadsheet();//source spreadsheet
var ts = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/MYSHEET');//target spreadsheet for tracking
var sourceSheet = ss.getSheetByName("Report Template");//source sheet
var targetSheet = ts.getSheetByName("Tracker");//target sheet
var values = sourceSheet.getRange("H7:I7").getValues();//source sheet cell range to copy to target sheet
var valuesLength = values.length;
if (!valuesLength) return;
var lastRow = targetSheet.getLastRow();
var requiredRows = valuesLength;
values[0].push(new Date()); //Add Date to the 2D array.
targetSheet.getRange(lastRow + 1, 1, valuesLength, values[0].length).setValues(values);
}
}
ВАЖНО :
Чтобы использовать службы, требующие авторизации, такие как SpreadsheetApp.openByUrl()
, вам необходимо заменить простой onEdit
триггер на устанавливаемый один.