ANS-1172 · DéVELOPPEMENT SUITESCRIPT

Comment générer un fichier CSV à télécharger dans NetSuite Suitelets sans l’enregistrer ?

Découvrez comment créer et fournir de manière dynamique un fichier CSV directement à partir d’un Suitelet NetSuite, permettant ainsi à l’utilisateur de le télécharger immédiatement sans avoir à l’enregistrer dans le « File Cabinet ».

Solution courte

Pour générer un fichier CSV à télécharger sans l’enregistrer dans le « File Cabinet » de NetSuite, créez un Suitelet qui construit dynamiquement le contenu du fichier CSV sous forme de chaîne de caractères. Utilisez ensuite `context.response.addHeader()` pour définir les en-têtes « Content-Type » et « Content-Disposition », puis `context.response.write()` pour générer la chaîne CSV, ce qui invitera l'utilisateur à enregistrer le fichier.

Scénario

Les utilisateurs de NetSuite ont souvent besoin de pouvoir générer des exportations de données au format CSV directement à partir d’un Suitelet. Le défi consiste à fournir cette fonctionnalité sans passer par l’étape intermédiaire consistant à enregistrer le fichier généré dans le « NetSuite File Cabinet », ce qui peut s’avérer inefficace pour les téléchargements ponctuels ou les rapports dynamiques.

Solution

Un fichier CSV est un fichier texte dans lequel les valeurs sont séparées par des délimiteurs, généralement des virgules. Pour générer un fichier CSV pouvant être téléchargé directement à partir d’un Suitelet NetSuite sans le stocker dans le « File Cabinet », procédez comme suit :

  1. Définissez un script de Suitelet avec un point d’entrée onRequest.

  2. Dans la fonction onRequest, initialisez une variable de type chaîne de caractères destinée à contenir le contenu du fichier CSV.

  3. Construisez dynamiquement la chaîne CSV, en incluant les en-têtes et les données. Chaque ligne doit être séparée par un retour chariot et un saut de ligne (rn).

  4. Définissez les en-têtes HTTP appropriés à l’aide de context.response.addHeader() afin de spécifier le type de contenu comme « text/csv » et de proposer un nom de fichier pour le téléchargement.

  5. Enfin, écrivez la chaîne CSV complète dans la réponse à l’aide de context.response.write(). Vous trouverez ci-dessous un exemple d’extrait de code Suitelet illustrant cette approche :

javascript/** * @NApiVersion 2.x * @NScriptType Suitelet */define([], function() {    function suiteletEntryPoint(context) {        var csv = '';        // Dynamically create the CSV structure        // Header        csv + 'Id,Name' + 'rn';        csv + '101,Stan';        // Set response headers for CSV download        context.response.addHeader({            name: 'Content-Type',            value: 'text/csv'        });        context.response.addHeader({            name: 'Content-Disposition',            value: 'attachment; filename="File Name.csv"'        });        // Write the CSV content to the response        context.response.write({            output: csv        });    }    return {        onRequest: suiteletEntryPoint    };});

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant