Календарь, наведение указателя мыши на день >> показывает, что находится в строке, содержащей эту дату - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующий простой список на листе с именем «Конвейер»:

enter image description here

Каждый раз, когда дата вводится в столбце E, эти даты получают форматируется на другом листе с названием «Календарь» (тот же документ), где у меня есть календарь, который выглядит следующим образом:

enter image description here

Это формула условного форматирования : =match(B1,indirect("Pipeline!E:E"),0)

На данный момент все хорошо.

Теперь, когда я нахожусь в «Календаре», я хотел бы вывести topi c из листа «Конвейер», соответствующего дату, на которую я наводил указатель мыши или выбираю.

Например, если теперь я выберу ячейку V16 в «Календаре», которая соответствует дате «18 июня», мне понадобится «Перенацеливание для Ho» (значение ячейки A10 в листе «Конвейер»), чтобы куда-то вывести.

Мне все равно, как. Это может быть ячейка на листе календаря или курсор мыши. На самом деле, формат вывода не так уж и необходим.

Надеюсь, кто-то может помочь. Заранее спасибо. А.

1 Ответ

1 голос
/ 17 июня 2020

Подход

Такое поведение достижимо с помощью техники программирования событий. В Google Таблицах вы можете запускать функции на основе следующих событий:

  • Открытие документа
  • Редактирование документа
  • Выбор документа

Для этого с этой целью вы можете использовать функцию onSelectionChange(e). Обработчик события Document selection.

Для обработки этих событий вам понадобится проект скрипта приложений. Вы можете легко привязать один к своей электронной таблице, перейдя к Tools>Script Editor.

Выходное представление

Я думаю, что в Google Таблицах вы можете воспользоваться представлением Note UI, чтобы показать требуемую информацию на основе содержимое выбранной ячейки.

Код:

Вот пример того, как обработать событие выбора, чтобы добавить элемент пользовательского интерфейса Note к выбранной ячейке:

function onSelectionChange(e) {
  let date = e.range.getValue().toString(); // I will explicitly cast the date object to string to ensure the comparison will work
  let range = e.range; // This will return a range of exactly one cell: The selected one
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let pipeline = ss.getSheetByName('Pipeline');
  let pipelineRows = pipeline.getDataRange().getValues(); // I will load all the Pipline table in a multidimensional array to get the title information
  let title = pipelineRows.filter(row => row[5].toString() == date).map(row => row[1]); // I will filter the Pipeline Rows by date and extract the title
  range.setNote(title); // Finally I will append the extracted title to a note in the selected cell.
}

Ссылка

Триггеры

Объект события

SpreadsheetApp

...