لتقديم طلباتكم
// Code Google Apps Script pour connecter le formulaire à Google Sheets
// Ce script doit être déployé en tant qu'application web dans Google Apps Script
function doPost(e) {
try {
// Vérifier si e et e.postData existent
if (!e || !e.postData) {
return ContentService.createTextOutput(JSON.stringify({
'result': 'error',
'error': 'Données de requête manquantes'
})).setMimeType(ContentService.MimeType.JSON);
}
// Parser les données JSON reçues
const data = JSON.parse(e.postData.contents);
// Ouvrir la feuille de calcul par son ID (remplacer par l'ID réel de votre feuille)
const ss = SpreadsheetApp.openById('14r3FZf-DnzzklKWdm3OPhouLCZmkazsUyH91uYaZ2w8');
// Sélectionner la première feuille (ou spécifier le nom de la feuille si différent)
const sheet = ss.getSheetByName('Commandes') || ss.getSheets()[0];
// Vérifier si les en-têtes existent, sinon les créer
if (sheet.getLastRow() === 0) {
sheet.appendRow([
'Horodatage',
'Numéro de commande',
'Nom du client',
'Numéro de téléphone',
'Email',
'Ville/Région',
'Produit(s) commandé(s)',
'Quantité(s)',
'Remarques',
'Adresse de livraison',
'Date de livraison souhaitée',
'Mode de livraison',
'Statut de la commande'
]);
}
// Générer un numéro de commande unique basé sur la date et un nombre aléatoire
const orderNumber = 'CMD-' + new Date().getTime().toString().slice(-6) + '-' + Math.floor(Math.random() * 1000);
// Préparer les données à insérer
const rowData = [
new Date(), // Horodatage
orderNumber, // Numéro de commande
data.name,
data.phone,
data.email,
data.city,
data.products,
data.quantity,
data.notes,
data.address,
data.deliveryDate,
data.deliveryMethod,
'À traiter' // Statut initial de la commande
];
// Ajouter les données à la feuille
sheet.appendRow(rowData);
// Retourner une réponse de succès
return ContentService.createTextOutput(JSON.stringify({
'result': 'success',
'orderNumber': orderNumber
})).setMimeType(ContentService.MimeType.JSON);
} catch (error) {
// En cas d'erreur, enregistrer l'erreur et retourner une réponse d'échec
Logger.log('Erreur lors du traitement de la commande: ' + error);
return ContentService.createTextOutput(JSON.stringify({
'result': 'error',
'error': error.toString()
})).setMimeType(ContentService.MimeType.JSON);
}
}
// Fonction pour tester le script (facultatif)
function testDoPost() {
const testData = {
name: 'Client Test',
phone: '0612345678',
email: 'test@example.com',
city: 'Fes',
products: 'Produit test',
quantity: '1',
notes: 'Ceci est un test',
address: 'Adresse test, Fes',
deliveryDate: '2025-05-20',
deliveryMethod: 'standard'
};
const testEvent = {
postData: {
contents: JSON.stringify(testData),
type: 'application/json'
}
};
const result = doPost(testEvent);
Logger.log(result.getContent());
}