Skip to main content
europeanrich
Participant
Jul 17, 2014 12:29 AM UTC
Answered

Script access to dataset variables

Hello,

I've added some dynamic text variables to an illustrator file (CC), captured the dataset and I'm trying to access these variable values through scripting.

Is this possible with the Dataset method or do I need to parse the XML to retrieve info between <Book></Book> etc?

I've hacked together a perl script to do this, but it's not ideal as I need to then use javascript to call applescript to run the shell script with administrator privileges!

I'm sure there must be an easier way – any help would be much appreciated. Exported XML file is as follows...

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN"    "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd" [

     <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">

     <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">

     <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">

     <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">

      <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">

<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">

]>

<svg>

<variableSets  xmlns="&ns_vars;">

      <variableSet  locked="none" varSetName="binding1">

          <variables>

               <variable  trait="textcontent" category="&ns_flows;" varName="Book"></variable>

               <variable  trait="textcontent" category="&ns_flows;" varName="Author"></variable>

               <variable  trait="textcontent" category="&ns_flows;" varName="Year"></variable>

          </variables>

          <v:sampleDataSets  xmlns:v="&ns_vars;" xmlns="&ns_custom;">

               <v:sampleDataSet  dataSetName="Data Set 1">

                    <Book>

                         <p>Catch-22</p>

                    </Book>

                    <Author>

                         <p>Joseph Heller</p>

                    </Author>

                    <Year>

                         <p>1961</p>

                     </Year>

                </v:sampleDataSet>

          </v:sampleDataSets>

     </variableSet>

</variableSets>

</svg>

This topic is closed to new replies. Start a new post to keep the conversation going.
CarlosCanto
CarlosCantoCorrect answer
Community Expert
Jul 17, 2014 6:43 AM UTC

here's an easier way

var idoc = app.activeDocument;

var vars = idoc.variables;

for (j=0; j<vars.length; j++)

    alert(vars.name + ' : ' + vars.pageItems[0].contents);

2 replies

CarlosCanto
Community Expert
CarlosCantoCommunity ExpertCorrect answer
Community Expert
Jul 17, 2014 6:43 AM UTC

here's an easier way

var idoc = app.activeDocument;

var vars = idoc.variables;

for (j=0; j<vars.length; j++)

    alert(vars.name + ' : ' + vars.pageItems[0].contents);

Translate
europeanrich
Participant
Jul 17, 2014 10:13 AM UTC

That is definitely an easier way. Thanks so much!

Translate