Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

How to fetch a file from the local drive (C or D drive of a computer) and attach to cat item for ATF

Rahul Raja Sami
Tera Guru

Hi 
I am trying to write a script to fetch a downloaded file from the local drive (C or D drive of a computer) and attach to cat item to raise a request automation for ATF test case?

// ServiceNow Script for fetching a file from the local drive and attaching it to a catalog item

(function () {
  // Define parameters
  var localFilePath = 'C:\\path\\to\\your\\file.txt'; // Update the path to your local file
  var catalogItemSysID = 'your_catalog_item_sys_id'; // Update with the actual catalog item sys_id
  var attachmentTableName = 'sc_cart_item'; // Table name for attachments

  // Fetch the current user's user ID
  var userID = gs.getUserID();

  // Create a GlideRecord for the catalog item
  var catalogItem = new GlideRecord('sc_cart_item');
  if (catalogItem.get(catalogItemSysID)) {
    // Read the file
    var file = new GlideSysAttachment();
    var fileContents = file.read(localFilePath);

    // Attach the file to the catalog item
    var attachment = new GlideSysAttachment();
    var attachmentSysID = attachment.write(catalogItemSysID, 'sc_cart_item', 'file.txt', 'text/plain', fileContents, userID);
    gs.log('Attachment Sys ID: ' + attachmentSysID);
  } else {
    gs.log('Catalog item not found.');
  }
})();

 

this is not working

 

2 REPLIES 2

Riya Verma
Kilo Sage

Hi @Rahul Raja Sami ,

 

Hope you are doing great.

 

you'd need a user interaction, like a file input, to select the file. Once the file is selected, you can then use the ServiceNow API to attach it to a record.

Here's a basic outline of how you can achieve this:

  1. Create a UI Page with a file input for users to select the file.
  2. Use the Attachment API to attach the selected file to the desired record.

sample script for the UI Page:

<!DOCTYPE html>
<html>
<head>
    <title>Attach File</title>
    <script src="/scripts/lib/jquery/jquery_latest.js"></script>
</head>
<body>
    <input type="file" id="fileInput" />
    <button onclick="uploadFile()">Upload</button>

    <script>
        function uploadFile() {
            var fileInput = document.getElementById('fileInput');
            var file = fileInput.files[0];
            var tableName = 'sc_cat_item'; // Change this to your table name
            var recordSysId = 'YOUR_SYS_ID'; // Change this to the sys_id of the record you want to attach to

            var formData = new FormData();
            formData.append('table_name', tableName);
            formData.append('table_sys_id', recordSysId);
            formData.append('uploadFile', file);

            $.ajax({
                url: '/api/now/attachment/upload',
                type: 'POST',
                data: formData,
                processData: false,
                contentType: false,
                success: function(response) {
                    alert('File uploaded successfully!');
                },
                error: function(error) {
                    alert('Error uploading file: ' + error.responseText);
                }
            });
        }
    </script>
</body>
</html>
Please mark the appropriate response as correct answer and helpful, This may help other community users to follow correct solution.
Regards,
Riya Verma

Shaqeel
Mega Sage
Mega Sage

Hi @Rahul Raja Sami 

 

Why don't you use following steps:

Shaqeel_0-1698906775175.png

Regards

Shaqeel


***********************************************************************************************************************
If my response proves useful, please indicate its helpfulness by selecting "Accept as Solution" and " Helpful." This action benefits both the community and me.

***********************************************************************************************************************





Regards

Shaqeel