Отправить в tag manager данные о продукте который в видимой области экрана

Иногда нужно отправить продукты которые попали в видимую область, тоесть пользователь задержал внимание на данных продуктах, нужно отправить в тегменеджер эту информацию, для этого можно воспользовать небольшим скритиком

		function inWindow(s){
				let scrollTop = $(window).scrollTop();
				let windowHeight = $(window).height();
				let currentEls = $(s);
				let result = [];
				currentEls.each(function(){
					let el = $(this);
					let offset = el.offset();
					if(scrollTop <= offset.top && (el.height() + offset.top) < (scrollTop + windowHeight))
						result.push(this);
				});
				return $(result);
			}

			let idTest =[];

			$(document).on('scroll', function () {
				let boxesInWindow = inWindow("div.product-layout");
				let impressions = [];
				if(!boxesInWindow.hasClass("already-send") && boxesInWindow.length!==0){
					boxesInWindow.css('border','1px dotted red');
					boxesInWindow.each(function(num){
						impressions.push({
								'name': $(this).find('.product-name a').text(),
								'id': $(this).find('.product-model').text(),
								'price': $(this).find('[itemprop=priceNumber]').attr('content'),
								'brand': $(this).find('[itemprop=manufacturer]').attr('content'),
								'category': '',
								'list': 'Товары в категории',
								'position': num+1
						});
					});

					let dataToLayer = {
						'ecommerce': {
							'currencyCode': 'UAH',
							'impressions': []
						},
						'event': 'gtm-ee-event',
						'gtm-ee-event-category': 'Enhanced Ecommerce',
						'gtm-ee-event-action': 'Product Impressions',
						'gtm-ee-event-non-interaction': 'True',
					}

					dataToLayer['ecommerce']['impressions'] = impressions;
					window.dataLayer = window.dataLayer || [];
					console.log(dataToLayer);
					dataLayer.push(dataToLayer);
					boxesInWindow.addClass("already-send");
				}
			});