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 :
Définissez un script de Suitelet avec un point d’entrée
onRequest.Dans la fonction
onRequest, initialisez une variable de type chaîne de caractères destinée à contenir le contenu du fichier CSV.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).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.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
