Business Digital

Construire une application AppSheet sans code : tutoriel pas-à-pas

7 دقائق للقراءة

📍 Article principal : Google Workspace pour PME : architecture et gouvernance
Ce tutoriel construit une application AppSheet pas-à-pas depuis un Google Sheet : modélisation, types de colonnes, vues Deck/Map, sécurité par utilisateur, mode hors ligne, déploiement.

Objectif

Concevoir une application mobile/web AppSheet de gestion de tournée commerciale, depuis trois feuilles Google Sheets, avec accès géolocalisé, capture photo, filtre de sécurité par utilisateur connecté et synchronisation hors ligne.

Tarification AppSheet (référence officielle)

Source : about.appsheet.com/pricing au 1er mai 2026.

  • Starter : 5 USD / utilisateur / mois — 5 bases AppSheet, 2 500 lignes max.
  • Core : 10 USD / utilisateur / mois — fonctionnalités avancées d’application et d’automatisation.
  • Enterprise Plus : 20 USD / utilisateur / mois — connecteurs entreprise, gouvernance, ML.

AppSheet Core est inclus par défaut dans les éditions Workspace suivantes (annonce Google Workspace Updates du 17 juillet 2023, toujours en vigueur en 2026) : Business Starter, Business Standard, Business Plus, Enterprise Starter, Enterprise Standard, Enterprise Plus, Enterprise Essentials Plus, Frontline Starter et Standard, Nonprofits, Education Standard et Plus.

Prérequis

  • Compte Workspace avec AppSheet Core inclus (cf. liste ci-dessus) ou licence AppSheet active.
  • Google Sheet ou Excel sur Drive comme source de données.
  • Smartphone Android ou iOS pour test du déploiement.
  • Niveau : débutant à intermédiaire — aucun code requis.
  • Temps : 2 heures pour la version 1.

Étape 1 — Modéliser les données

Dans un Google Sheet Tournees Commerciales, créer trois feuilles distinctes (AppSheet les traite comme trois tables) :

Feuille Clients : ID, Nom, Adresse, Ville, Téléphone, Email, Latitude, Longitude.

Feuille Tournees : ID, Date, Commercial (email Workspace), Statut (Planifiée / En cours / Terminée).

Feuille Visites : ID, Tournée (réf vers Tournees.ID), Client (réf vers Clients.ID), Heure prévue, Statut (À faire / Faite / Annulée), Compte-rendu, Photo, Position GPS.

Règle d’AppSheet : chaque table doit avoir une colonne ID en première position avec un identifiant unique. Sans ID en clé, les Refs entre tables ne fonctionnent pas.

Étape 2 — Création de l’application

Depuis le Sheet : Extensions → AppSheet → Créer une application. AppSheet ouvre la console avec une app pré-générée à partir des trois feuilles. Renommer dans Settings → Information → Name.

Étape 3 — Typage des colonnes

Dans Data → Columns → Visites, configurer :

  • ID : type Text, Initial value = UNIQUEID(), Key coché, Show décoché.
  • Tournée : type Ref → table Tournees.
  • Client : type Ref → table Clients.
  • Heure prévue : type DateTime.
  • Statut : type Enum, valeurs À faire / Faite / Annulée, Initial value = À faire.
  • Compte-rendu : type LongText.
  • Photo : type Image (active la caméra du téléphone à la saisie).
  • Position GPS : type LatLong, Initial value = HERE().

Pour la table Clients, créer une colonne virtuelle Position de type LatLong, formule LATLONG([Latitude],[Longitude]), qui sera utilisée par la vue carte. Sur la table Tournees, ID en UNIQUEID(), Date en type Date, Commercial en Email, Statut en Enum.

Étape 4 — Vues UX

Dans UX → Views :

Vue Tournée du jour : For this data = Visites, View type = Deck, Sort = Heure prévue, Group = Statut, Filter = [Tournée].[Date] = TODAY().

Vue Carte clients : For this data = Clients, View type = Map, Position = colonne virtuelle Position définie à l’étape 3.

Vue Détail visite : View type = Detail, fields visibles : Client, Heure prévue, Statut, Compte-rendu, Photo, Position GPS. Cette vue est ouverte au tap sur une carte de la vue Deck.

Étape 5 — Sécurité par utilisateur

Dans Security → Require user signin : activer avec Authentication provider = Google.

Dans Data → Tables → Tournees → Security filter : [Commercial] = USEREMAIL(). Cette expression filtre les lignes au commercial connecté.

Dans Data → Tables → Visites → Security filter : [Tournée].[Commercial] = USEREMAIL(). La référence Ref vers Tournees permet le filtre transitif.

Pour les rôles administrateurs voyant l’ensemble : créer un rôle Manager dans Users → Roles, ajuster le filtre en OR([Tournée].[Commercial] = USEREMAIL(), USERROLE() = "Manager").

Étape 6 — Mode hors ligne

Dans Behavior → Offline/Sync :

  • The app can start when offline : activé.
  • Store the app for offline use : activé.
  • Sync on start : activé si l’app doit se rafraîchir à chaque ouverture.
  • Automatic updates : activé pour que les modifications hors ligne se synchronisent dès la reconnexion.

Test : lancer l’app, mettre le téléphone en mode avion, créer une visite avec photo, désactiver le mode avion, observer la synchronisation se faire dans le bandeau supérieur.

Étape 7 — Déploiement

Dans Manage → Deploy → Deployment Check, AppSheet exécute des tests automatiques. Corriger les avertissements rouges (bloquants).

Une fois les tests verts, cliquer Move app to deployed state. L’app passe en production. Récupérer l’URL dans Share app et la diffuser aux utilisateurs.

Au premier accès depuis un téléphone, le navigateur propose Ajouter à l’écran d’accueil — l’app s’installe en PWA avec icône, plein écran et accès hors ligne. Pour publication marque blanche sur Google Play / App Store, AppSheet Enterprise Plus est requis.

Vérification

Quatre scénarios à passer :

  1. Connexion depuis un compte commercial : voir uniquement ses tournées du jour.
  2. Saisie d’une visite avec photo et position : ligne visible dans le Sheet, photo uploadée sur Drive.
  3. Saisie en mode avion puis retour réseau : synchronisation automatique sans perte.
  4. Connexion depuis un compte avec rôle Manager : voir l’ensemble des tournées.

Erreurs fréquentes

Erreur Cause Solution
Sync très longue sur mobile Volume chargé trop important Renforcer les Security filter, limiter au commercial connecté
Refs vides dans les listes déroulantes Colonne ID manquante ou non Key sur la table cible Cocher Key sur la colonne ID de la table cible
HERE() ne capture pas la position Permission GPS refusée Autoriser localisation pour le navigateur ou la PWA
Photo non uploadée Quota Drive ou permission insuffisante Vérifier quota et permissions du dossier d’upload
Avertissement license required Édition Workspace n’incluant pas AppSheet Core, ou licence séparée expirée Vérifier l’inclusion ou renouveler la licence
App ne se déploie pas Avertissements rouges dans Deployment Check Lire chaque avertissement, corriger avant redéploiement

Tutoriels associés

Références officielles

FAQ

Pour quelles éditions Workspace AppSheet Core est-il inclus ?
Business Starter, Business Standard, Business Plus, Enterprise Starter, Enterprise Standard, Enterprise Plus, Enterprise Essentials Plus, Frontline Starter et Standard, Nonprofits, Education Standard et Education Plus (annonce officielle du 17 juillet 2023).

Limite d’utilisateurs sur une app AppSheet ?
Pas de plafond strict côté plateforme. Limite pratique liée à la performance Google Sheets comme source ; au-delà de quelques milliers de lignes, basculer sur Cloud SQL ou BigQuery comme source.

Quelle expression pour récupérer l’utilisateur connecté ?
USEREMAIL() retourne l’email du compte authentifié. USERROLE() retourne le rôle défini dans Users → Roles.

Différence Ref vs Lookup ?
Ref est un type de colonne créant une relation persistante entre deux tables — l’utilisateur sélectionne une ligne dans la table cible. LOOKUP() est une fonction d’expression qui résout une valeur dans une autre table à partir d’une clé.

Versionner une app AppSheet ?
Manage → Author → Copy app pour cloner. Pour un workflow Dev/Staging/Prod plus poussé, AppSheet Enterprise Plus est requis.

Publication grand public sur les stores ?
Disponible avec AppSheet Enterprise Plus (whitelabel branded apps). Sur Core, déploiement en lien partageable et installable comme PWA depuis le navigateur mobile.

مشاركة