Demander une démo →
Démo gratuite · 15 min

Voyez NotePlus
en action.

Prenez 15 minutes avec l’un de nos experts. Nous vous montrerons comment notre chemin de fer interactif s’adapte à vos propres fichiers et processus de validation.

  • Démonstration personnalisée sur vos cas d’usage.
  • Évaluation de vos besoins de stockage (Haute Définition).
  • Sans aucun engagement.
MLSAJPER

200+ professionnels
de l’édition nous font confiance

Planifier ma démo gratuite

Réponse sous 24h ouvrées — sans engagement.

Sélectionnez… Indépendant 2 à 10 personnes 11 à 50 personnes Plus de 50 personnes

🔒 Données protégées — Conformité RGPD

Dans la boîte !

Merci
un expert NotePlus vous contactera sous 24h ouvrées pour fixer le créneau qui vous convient.

(function(){ /* ─── 1. Masquer navigation (page démo = tunnel de conversion) ─────── */ document.body.classList.add(‘np-demo-lp’); /* ─── 2. Capture & persistance des UTM sur TOUT le site ───────────── */ var UTM = [‘utm_source’,’utm_medium’,’utm_campaign’,’utm_content’,’utm_term’]; var qs = new URLSearchParams(window.location.search); UTM.forEach(function(k){ var v = qs.get(k); if(v){ try{ localStorage.setItem(‘np_’+k, v); }catch(e){} } }); function getUTM(k){ return qs.get(k) || (function(){ try{ return localStorage.getItem(‘np_’+k)|| »; }catch(e){ return  »; } })(); } /* ─── 3. Remplir champs cachés ────────────────────────────────────── */ function setVal(id, v){ var el=document.getElementById(id); if(el) el.value=v|| »; } setVal(‘nf-utm-source’, getUTM(‘utm_source’)); setVal(‘nf-utm-medium’, getUTM(‘utm_medium’)); setVal(‘nf-utm-campaign’, getUTM(‘utm_campaign’)); setVal(‘nf-utm-content’, getUTM(‘utm_content’)); setVal(‘nf-utm-term’, getUTM(‘utm_term’)); /* Origine = page de provenance (referrer interne ou param ?origine=) */ var origine = qs.get(‘origine’) ||  »; if(!origine && document.referrer){ try{ var ref = new URL(document.referrer); origine = (ref.hostname === window.location.hostname) ? ref.pathname /* ex: /agences */ : document.referrer; /* domaine externe (Google, LinkedIn…) */ }catch(e){ origine = document.referrer; } } setVal(‘nf-origine’, origine || ‘Accès direct’); /* ─── 4. Soumission du formulaire ─────────────────────────────────── */ /* * ⚙ CONFIGURATION REQUISE * Remplacez la valeur ci-dessous par l’URL de votre Google Apps Script Web App. * Voir le fichier noteplus-apps-script.gs livré avec ce projet pour le code à déployer. */ var SCRIPT_URL = ‘https://script.google.com/a/macros/graphique-alliance.com/s/AKfycbxN5oAuqvrdZntHRJRyQutkEsw-Bxg0qTsIjsPF3LDf47Y_XCoU01zUik4h3D6AaH2rjw/exec’; var form = document.getElementById(‘np-demo-form’); var btn = document.getElementById(‘np-dfc-btn’); var card = document.getElementById(‘np-demo-card’); if(!form) return; function showSuccess(prenom){ var ok = document.getElementById(‘np-form-ok’); var pn = document.getElementById(‘np-ok-prenom’); if(pn) pn.textContent = prenom ||  »; card.querySelector(‘form’).style.display = ‘none’; card.querySelector(‘.np-dfc-head’).style.display = ‘none’; if(ok) ok.style.display = ‘block’; } form.addEventListener(‘submit’, function(e){ e.preventDefault(); /* Validation */ var ok = true; form.querySelectorAll(‘[required]’).forEach(function(f){ f.classList.remove(‘np-err’); if(!f.value.trim()){ f.classList.add(‘np-err’); ok=false; } }); if(!ok){ form.querySelector(‘.np-err’).focus(); return; } /* Effacer erreurs au focus */ form.querySelectorAll(‘.np-err’).forEach(function(f){ f.addEventListener(‘input’, function(){ this.classList.remove(‘np-err’); },{once:true}); }); btn.classList.add(‘np-loading’); btn.querySelector(‘.np-blt’).textContent = ‘Envoi en cours…’; var prenom = document.getElementById(‘nf-prenom’).value; var data = new URLSearchParams(new FormData(form)).toString(); /* Mode démo local (URL non configurée) */ if(!SCRIPT_URL || SCRIPT_URL.indexOf(‘REMPLACER’) > -1){ setTimeout(function(){ showSuccess(prenom); }, 1000); return; } /* Envoi vers Google Apps Script (no-cors = contourne CORS, données bien reçues) */ fetch(SCRIPT_URL, { method : ‘POST’, headers: { ‘Content-Type’: ‘application/x-www-form-urlencoded’ }, body : data, mode : ‘no-cors’ }) .then(function(){ setTimeout(function(){ showSuccess(prenom); }, 400); }) .catch(function(){ btn.classList.remove(‘np-loading’); btn.querySelector(‘.np-blt’).textContent = ‘⚠ Erreur réseau — réessayez’; btn.style.background = ‘#dc3545’; }); }); })();