{"id":3245,"date":"2017-08-21T15:21:23","date_gmt":"2017-08-21T15:21:23","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-to-capture-netsuite-transaction-email-threads-using-suitescript-2\/"},"modified":"2026-07-28T18:25:37","modified_gmt":"2026-07-28T18:25:37","slug":"comment-extraire-les-fils-de-discussion-des-e-mails-de-transaction-netsuite-a-laide-de-suitescript","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-extraire-les-fils-de-discussion-des-e-mails-de-transaction-netsuite-a-laide-de-suitescript\/","title":{"rendered":"Comment extraire les fils de discussion des e-mails de transaction NetSuite \u00e0 l&rsquo;aide de SuiteScript ?"},"content":{"rendered":"","protected":false},"template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","ga_subtitle":"D\u00e9couvrez les bonnes pratiques pour envoyer des e-mails par programmation dans NetSuite et les associer aux enregistrements concern\u00e9s afin de conserver des fils de discussion complets.","ga_short_answer":"Pour capturer les fils de discussion par e-mail li\u00e9s aux transactions NetSuite \u00e0 l\u2019aide d\u2019un script, utilisez l\u2019API SuiteScript 2.x N\/email.send. Assurez-vous que le param\u00e8tre relatedRecords associe correctement l\u2019e-mail \u00e0 la transaction \u00e0 l\u2019aide de transactionId, et pr\u00e9cisez l\u2019auteur et les destinataires de mani\u00e8re appropri\u00e9e. Cette m\u00e9thode garantit un encha\u00eenement correct des messages et une association ad\u00e9quate des enregistrements.","ga_scenario":"Les utilisateurs ont souvent besoin d\u2019envoyer des e-mails de mani\u00e8re programmatique depuis NetSuite et de s\u2019assurer que ces communications sont correctement associ\u00e9es \u00e0 des transactions, des clients ou d\u2019autres enregistrements sp\u00e9cifiques. Pour obtenir un encha\u00eenement correct des e-mails et une liaison ad\u00e9quate avec les enregistrements, il est n\u00e9cessaire de configurer avec pr\u00e9cision les param\u00e8tres de l\u2019API e-mail SuiteScript.","ga_solution":"Pour garantir un encha\u00eenement correct des e-mails et leur association avec les enregistrements NetSuite lors de l\u2019envoi d\u2019e-mails par programmation, il est essentiel de configurer correctement les param\u00e8tres de l\u2019API e-mail SuiteScript. L\u2019API `N\/email.send` de SuiteScript 2.x constitue actuellement la meilleure pratique pour cette fonctionnalit\u00e9.\n\nLa fonction `N\/email.send` n\u00e9cessite un objet JavaScript `options` pour d\u00e9finir ses param\u00e8tres. Une combinaison tr\u00e8s sp\u00e9cifique de ces param\u00e8tres est requise pour d\u00e9clencher l\u2019encha\u00eenement des e-mails et l\u2019association aux enregistrements :\n\n*   `author` : ce param\u00e8tre doit correspondre \u00e0 l\u2019identifiant interne d\u2019un collaborateur.\n*   `recipients` : ce param\u00e8tre peut \u00eatre un identifiant interne d\u2019enregistrement client, un identifiant interne de contact ou une adresse e-mail directement.\n*   `subject` : l\u2019objet de l\u2019e-mail.\n*   `body` : le corps de l\u2019e-mail.\n*   `relatedRecords` : cet objet est essentiel pour associer l\u2019e-mail aux fiches NetSuite. Pour les transactions, il doit contenir `transactionId: transactionId`. Pour les clients ou les contacts, utilisez `entityId: entityId`.\n*   `attachments` : un tableau d\u2019objets `file.File` \u00e0 joindre.\n*   `cc` : un tableau d\u2019identifiants internes ou d\u2019adresses e-mail pour les destinataires en copie cach\u00e9e.\n*   `bcc` : un tableau d\u2019identifiants internes ou d\u2019adresses e-mail pour les destinataires en copie cach\u00e9e.\n\nLe code SuiteScript 2.x suivant montre comment <a class=\"ga-interlink\" href=\"https:\/\/answers.gurussolutions.com\/fr\/answers\/how-does-netsuite-handle-email-sending-in-production-vs-sandbox-environments\/\">envoyer un e-mail et l\u2019associer \u00e0 une transaction<\/a> :\n\n```\njavascript\n\/\/ Assuming 'email' module is loaded (e.g., via define(['N\/email'], function(email) { ... }))\nvar SCRIPT_AUTHOR_ID = '786014'; \/\/ Employee Record Internal ID\nvar emailAuthor = SCRIPT_AUTHOR_ID;\nvar transactionId = 'YOUR_TRANSACTION_ID'; \/\/ Placeholder for actual transaction ID\nvar customerId = 'YOUR_CUSTOMER_ID';     \/\/ Placeholder for actual customer ID or email address\nvar emailSubject = 'YOUR_EMAIL_SUBJECT';\nvar emailBody = 'YOUR_EMAIL_BODY';\nvar emailAttachment = null; \/\/ Or an array of file.File objects\n\nemail.send({\n    author: emailAuthor,\n    recipients: customerId, \/\/ Can be an internal ID or an email address\n    subject: emailSubject,\n    body: emailBody,\n    relatedRecords: {\n        transactionId: transactionId\n        \/\/ For associating with a customer\/contact directly, use entityId: customerId\n    },\n    attachments: emailAttachment ? [emailAttachment] : null,\n    cc: null, \/\/ Or an array of recipient IDs\/emails\n    bcc: null \/\/ Or an array of recipient IDs\/emails\n});\n```\n\nPar d\u00e9faut, l\u2019auteur d\u00e9sign\u00e9 d\u2019un e-mail envoy\u00e9 via SuiteScript ne re\u00e7oit pas de copie dans sa bo\u00eete de r\u00e9ception personnelle, car NetSuite part du principe que c\u2019est l\u2019auteur qui a initi\u00e9 la communication. Pour vous assurer que l\u2019auteur re\u00e7oive une copie, son adresse e-mail peut \u00eatre incluse dans le param\u00e8tre `cc` de l\u2019objet d\u2019options `N\/email.send` :\n\n```\njavascript\n\/\/ Example of including the author's email in CC\nemail.send({\n    author: emailAuthor,\n    recipients: customerId,\n    subject: emailSubject,\n    body: emailBody,\n    cc: ['author@email.com'], \/\/ Include author's email address here\n    relatedRecords: {\n        transactionId: transactionId\n    }\n    \/\/ ... other parameters like attachments, bcc\n});\n```\n\nLe comportement li\u00e9 aux destinataires en copie (CC) et \u00e0 la fonctionnalit\u00e9 \u00ab R\u00e9pondre \u00e0 tous \u00bb peut varier en fonction des configurations du client de messagerie et des param\u00e8tres sp\u00e9cifiques de NetSuite ; il convient donc de le tester dans votre environnement.\n\nLorsqu\u2019ils sont correctement configur\u00e9s, les e-mails envoy\u00e9s \u00e0 l\u2019aide de `N\/email.send` seront enregistr\u00e9s et regroup\u00e9s dans les fils de discussion associ\u00e9s aux fiches de transaction, de client et d\u2019employ\u00e9 au sein de NetSuite, offrant ainsi un historique complet des communications.","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T17:21:23+02:00","ga_date_verified":"2026-07-05","ga_source_subject":"Capture transaction email thread by script?","ga_ans_id":"ANS-1506","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The `nlapiSendEmail` function is a SuiteScript 1.0 API and is considered legacy; the current best practice is to use `N\/email.send` in SuiteScript 2.x.; The method of passing parameters has changed from direct arguments to an `options` JavaScript object in SuiteScript 2.x.; The `Records` parameter (for associating the email with NetSuite records) is now `relatedRecords` in SuiteScript 2.x, and its structure uses specific keys like `transactionId` or `entityId` within an object, rather than a direct hash list like `records['transaction']`.; The claim that `Recipient` *must* be a customer or contact internal ID is partially outdated, as `N\/email.send` also accepts email addresses directly.; The provided code snippet uses SuiteScript 1.0 syntax, which is outdated.; The claim about the CC parameter causing problems with 'answer to all' cannot be verified with current documentation.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[92],"class_list":["post-3245","qa_entry","type-qa_entry","status-publish","hentry","ga_category-developpement-suitescript","ga_category-suitescript-development","ga_audience-developer-suitescript","ga_difficulty-niveau-intermediaire"],"taxonomy_info":{"ga_category":[{"value":108,"label":"D\u00e9veloppement SuiteScript"},{"value":23,"label":"SuiteScript Development"},{"value":108,"label":"D\u00e9veloppement SuiteScript"}],"ga_audience":[{"value":10,"label":"Developer\/SuiteScript"}],"ga_difficulty":[{"value":92,"label":"Niveau interm\u00e9diaire"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry"}],"about":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/types\/qa_entry"}],"version-history":[{"count":1,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3245\/revisions"}],"predecessor-version":[{"id":5165,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3245\/revisions\/5165"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3245"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3245"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3245"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}