У меня есть 3 таблицы для хранения данных для входа / выхода.лист входа / выхода (sheet1), лист отслеживания времени (sheet2) и зеркальный лист (sheet3) Зеркальный лист предназначен для сравнения нового списка со старым списком.Проблема, которую я хочу решить, состоит в том, чтобы сделать так, чтобы код не был на листе1.Я хочу, чтобы это было на sheet2, но проблема в том, что на листе есть все триггеры и что-то вроде sheet1.Но поскольку люди будут использовать это, я не хочу, чтобы они могли находить код и связываться с ним, поэтому я хочу, чтобы sheet2 контролировал все с помощью кода.Вот часть кода, которая, я думаю, имеет отношение к этой проблеме.он отлично работает, когда он находится на Sheet1, но помещает его на sheet2, и он не работает.Я положил setActiveSpreadsheet в надежде, что это все, что было нужно, но, очевидно, нет.
function onEdit(e) {
var sos = SpreadsheetApp.openById("sheet1 id");
var sas = SpreadsheetApp.setActiveSpreadsheet(sos);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s1 = ss.getActiveSheet();
var row = getCurrentRow()
var Location = getValue('C' + row)
var LocationA = getValue('A' + row)
var LocationB = getValue('B' + row)
var passiveRow = findRows(1,LocationA,2,LocationB,5,"");
if(Location !== 'HOME' && Location !== "" && Location !== 'LOCATION' && passiveRow == "") {
addRecord(LocationA, LocationB, Location, new Date());
}
else if(Location !== 'HOME' && Location !== "" && Location !== 'LOCATION' && passiveRow !== "") {
setValue('E' + passiveRow, new Date());
setValue('F' + passiveRow, getDaysHoursAndMinutes(getValue('D' + passiveRow),getValue('E' + passiveRow)));
addRecord(LocationA, LocationB, Location, new Date());
}
else if(Location === 'HOME' && passiveRow !== "") {
setValue('E' + passiveRow, new Date());
setValue('F' + passiveRow, getDaysHoursAndMinutes(getValue('D' + passiveRow),getValue('E' + passiveRow)));
}
}
///Functions to automatically add and replace dropdown boxes
function onChange(e){
checkAndPlace();
settingMirror();
var sos = SpreadsheetApp.openById("sheet1 id");
var sas = SpreadsheetApp.setActiveSpreadsheet(sos);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s1 = ss.getActiveSheet();
var FirstEmptyA = getFirstEmptyRow('A:A');
var FirstEmptyC = getFirstEmptyRow('C:C');
var dif = Math.abs(FirstEmptyA - FirstEmptyC);
var EmptyArow =s1.getRange(FirstEmptyA ,3)
var validationList = SpreadsheetApp.newDataValidation().requireValueInList(['HOME','SCHOOL','BANK','MALL'], true).build()
if(FirstEmptyA - FirstEmptyC < 0){
var rangedif =s1.getRange(FirstEmptyA+1,3,dif)
rangedif.clearDataValidations();
rangedif.clearContent();
}
else if(FirstEmptyC - FirstEmptyA < 0) {
var rangedif =s1.getRange(FirstEmptyC +1,3,dif)
rangedif.setDataValidation(validationList);
rangedif.setValue('OASIS');
}
}
function getFirstEmptyRow(range) {
var spr = SpreadsheetApp.getActiveSpreadsheet();
var column = spr.getRange(range);
var values = column.getValues();
var ct = 0;
while ( values[ct] && values[ct][0] != "" ) {
ct++;
}
return (ct);
}
Итак, чтобы подвести итог, я пытаюсь сделать так, чтобы код onEdit одной электронной таблицы мог срабатывать, когда другая электронная таблицаизм.Без какого-либо кода в другой электронной таблице.