Я пишу скрипт для привязки двух ячеек, которые всегда сохраняют одно и то же значение после каждого редактирования. Мой сценарий до сих пор выглядит следующим образом:Как определить, равны ли две ячейки в скрипте Google Apps для Google Spreadsheet
function myEdit(event){
var ss = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var bind1 = ss.getRange("D11:D11").getCell(1,1);
var bind2 = ss.getRange("D10:D10").getCell(1,1);
var editedCell = r.getCell(1,1);
Logger.log("checking");
if (editedCell === bind1){
Logger.log("Condition was Met!");
bind1.copyTo(bind2);
}
else if (editedCell === bind2){
Logger.log("Condition was met!");
bind2.copyTo(bind1);
}
else{
Logger.log("No condition was met.");
}
При изменении значения в любой из связанных ячеек, ничего не копируется нигде. Когда я проверяю журналы выполнения, оказывается все прошло хорошо
[14-07-21 10:47:06:215 EDT] Execution succeeded [0.884 seconds total runtime]
Но когда я проверяю журналы Logger, я получаю
[14-07-21 10:55:49:260 EDT] checking
[14-07-21 10:55:49:260 EDT] No condition was met.
По какой-то причине программа не признается, что editedCell и bind1 являются тот же объект, когда я редактирую ячейку D11.
Проверяя значения bind1 и editCell, значения одинаковы, поэтому они должны ссылаться на одну и ту же ячейку, но оператор равенства не работает, чтобы проверить, являются ли они одним и тем же диапазоном.
Все 'Исполнение succeeded' означает, что код работал без каких-либо ошибок. Это не значит, что он сделал то, что хотел. Поместите оператор 'Logger.log()' для всех ваших переменных или запустите Debug, пройдите через каждую строку кода и просмотрите значения переменных в окне отладки. –
Yup! Я упомянул, что выполнение выполнено именно так, чтобы люди знали, что ошибок «не удалось выполнить» и т. П. Не было. Logger.log (отредактированныйКелл) просто распечатывает слово «Диапазон». Если I Logger.log (отредактированCell.getValue()), он выдает значение требуемой ячейки. Кроме того, (editCell.getValue() === bind1.getValue()) оценивает значение true, но (отредактированоCell === bind1) оценивается как false. – johncorser
Диапазон - это возвращаемый тип класса Range. [Диапазон классов] (https://developers.google.com/apps-script/reference/spreadsheet/range#) Я думаю, что есть еще один шаг. Затем вам нужно использовать метод getValue() 'для класса Range. 'var editCell = r.getCell (1,1) .getValue()' –