Я пытаюсь создать модальное всплывающее окно, которое выполняет некоторую работу с данной ячейкой таблицы в Документе Google, используя HTMLService и GAS.
Всплывающее окно работает, и в целом я могу передавать данные из сценария сервераклиентскому скрипту и обратно.Часть данных, которую я не могу передать, это ячейка таблицы, в которой находился курсор при открытии всплывающего окна .
Подход 1. Если я передаю его непосредственно клиенту и обратно,ссылка не работает, потому что к моменту получения клиентом она составляет null
.Я могу передать содержимое ячейки точно в том же контексте, так что строки работают, это просто факт, что это ссылка на ячейку.(Имеет смысл.)
Подход 2: Если я сохраню ссылку TableCell в глобальной переменной на стороне сервера, я получу Cannot call method "getText" of undefined
- ссылка не определена после первого обхода.(Я предполагаю, что серверный скрипт полностью перезагружается в это время.)
Подход 3: Если я использую CacheService.getUserCache () на стороне клиента, когда я пытаюсь получить мой кэшированный объект TableCell, он кажется отключенным оттот, который я установил, потому что я получаю ранее непонятную ошибку Cannot find function getText in object TableCell.
// server, before popup is opened:
cache.put('cell_currently_being_edited', active_doc.getCursor().getElement().getParent());
// popup client calls server function like so:
google.script.run.withSuccessHandler(load_content).get_starting_content();
// server, where the above error occurs:
function get_starting_content() {
var cell_currently_being_edited = cache.get('cell_currently_being_edited');
return cell_currently_being_edited.getText();
}
Если бы ячейки имели какое-то фиксированное значение ID, которое я мог бы передать, это могло бы сработать ...
Я бы сделал это на основе текста в ячейке, но я надеюсь, что это не единственный вариант, потому что текст ячейки в целом (и да, в этом конкретном контексте тоже) может быть не уникальным, поэтому после прохождения туда и обратно я могу оказатьсязамена текста в другой ячейке, отличной от того, в котором находился курсор, когда пользователь активирует всплывающее окно.