2

I am trying to retrieve the column names from a shared data extension in the Marketing Cloud. I am using the follow code. This code is working with data extensions which are not in the shared items folder.

When I add "ENT." to the external key as mentioned in the documentation (to access a shared data extension) the code does not work any more and no columns are retrieved.

Documentation: http://help.exacttarget.com/en/documentation/exacttarget/content/server_side_javascript/server_side_javascript_syntax_guide/core_library_server_side_javascript_functions/data_extension_server_side_javascript_functions#section_4

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled document</title>
<style type="text/css">
html {
    padding: 10px;
}
</style>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
<script runat=server>

Platform.Load("Core","1");  

var dataExtensionExternalKey = 'DATA_EXTENSION_EXTERNAL_KEY'; // USE ENT. to acces shared?
var dataExtensionFilterField = 'FILTER_COLUMN_NAME' // Column name to filter on
var dataExtensionOperator = 'equals'
var dataExtensionFilterValue = 'FILTER_COLUMN_VALUE' // Value to filter on

// SimpleOperator types: equals, notEquals
var dataExtensionFilter = {
    Property: dataExtensionFilterField,
    SimpleOperator: dataExtensionOperator,
    Value: dataExtensionFilterValue
}

var sourceDataExtension = DataExtension.Init(dataExtensionExternalKey); // Set Source data extension

var dataExtensionFields = sourceDataExtension.Fields.Retrieve(); // Retrieve the Data Extension columns

var dataExtensionFieldsLength = dataExtensionFields.length; // Set length to loop through all found column names

</script>
</head>

<body>
<div>
  <h1>DataExtension Columns Output</h1>
  <table border="0" cellpadding="0" cellspacing="0" class="table table-striped table-bordered table-hover table-condensed">
    <thead>
      <tr>
        <script runat=server>
        if (dataExtensionFieldsLength > 0) {
            // Write extra column for counting found records
            Write('<th>' + '#' + '</th>');

            // Write all column names
            for (var i = 0; i < dataExtensionFieldsLength; i++) {
                Write('<th>');
                Write(dataExtensionFields[i].Name);
                Write('</th>');
            }
        }
        </script>
      </tr>
    </thead>
    <tbody>
    <!-- OUTPUT ALL RECORDS WHICH ARE FOUND, BASED ON FILTER -->
    </tbody>
  </table>
</div>
</body>
</html>

  • The "ENT." is only necessary when assessing the shared data extension from a child business unit. If the code is executing in the parent business unit, then you should not include the "ENT." – David Devoy Jul 2 '15 at 21:15
  • My code is executing in a child business unit. Also I do not have the permissions to access the parent business unit. – Wesley Jul 3 '15 at 7:24
  • @Wesley Awesome Work could you please Work on same requirement through soap api I tried but iam not getting result.Please give me suggestion for to Acheive this requirement. – UserSFMC Mar 20 '18 at 13:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.