Basic doubt in InDesign Scripting

Hi All,
I have little bit knowledge in InDesign Scripting, but i have not rectify the below error.
Take an example,
I want to move "Footnote" styled paragraphs to another frame or another document. I have followed the below steps.
1. Find parastyle
2. Matched para's assigned to array
3. using the array i am going to move.
In this logic, First para moved perfectly, but other paras are totally changed.
It is happend because of para index changed at the time of moving. How to avoid this problem?
Regards,
sudar.

findText() and its cousins have an optional argument to reverse the order of the results.
At least that's what the object model says.
Dirk

Similar Messages

  • Indesign Scripting Object Model

    Hi,
    Is there some reference documentation that provides detailed information on the Indesign object model as exposed to the scripting interface (javascript)?
    I have done fair amount of scripting in Illustrator so I was looking for the Indesign equivalent of this document
    http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/illustrator/scrip ting/illustrator_scripting_reference_javascript_cs5.pdf
    I looked at this document but it seems kind of sparse (compared to illustrator)
    http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/products/indesign/pdfs/InDes ignCS5_ScriptingGuide_JS.pdf
    Obviously they are different applications but I was kind of hoping there would be more info for Indesign scripting.
    In particular I am looking for some insight on how to effectively walk or traverse the document structure of an indesign document using code.
    Finding specific things by type seems out of the picture becuase after doing object reflection on all the page items in an indesign document nothing seems to have a "type" property.
    In my illustrator scripts I was able to place stuff in illustrator layers, give arbitrary pageitems a name and then later go find and manipulate via script. Not as clear how to do this in an indesign context.
    The one advantage of this was that in illustrator I was able to use textframes to hold variable data and read later via scripts. The document becomes the database. And I could create any number of arbitrary "variables" inside the document outside the white board. WOndering how to do this kind of stuff with indesign so I can do template driven documents that are managed by scriptings and form UI that I create.

    commnet: Glad to hear you're clear on the new keyword. It's something that a lot of people are confused about.
    Also glad to hear you've read Crockford's book on this stuff. Honestly I think for most InDesign usage, it's a mistake to worry about any kind of inheritance...usually it's easier to ignore all that stuff.
    And to answer the question about number of properties, probably talking max 100 or so. Certainly not thousands. I just want to have my own datastructure embedded in the indesign document that I can easily talk to via scripts. And this data needs to persist between instances of the javascript script's lifecycle. So it seems having some XML to parse is the solution. If that makes sense.
    If there was a way to deal with JSON data "hidden" within an indesign document I would gladly work with that. But I still need to change certain common content snippets inside the flow of the indesign document in a consistent way.
    I think if you have max 100 properties, you should probably choose the methods that are clearest code, rather than most efficient. I suppose you might have noticable delay with 100, though, obviously try it and see. I'm confused but I thought you needed to have your data associated with text elements inside your document, such that it is visible to a user in the user interface. Hence the proposal of using XML tagged text inside a Text Frame. Did that requirement go away?
    If you just want to hide JSON in the document, then use document.insertLabel() of a string of JSON and be done with it.
    You can also use the JavaScript interpreter's E4X features, that give you much richer Javascript bindings for manipulating XML objects and files. Unfortunately the Javascript's XML bindings have nothing to do with the InDesign XML object model. So could, e.g., export the InDesign DOM XML into a file, read that into a Javascript XML object, manipulating with E4X functions, write it out to a file, and then re-import it into the DOM. Not really very convenient.
    I honestly don't know much about Javascript for browsers, so if you could be more concrete in your queries it would be easier to answer.
    Looking forward to your example snippet though.
    OK, so, in Jeff (absqua)'s example, you create a constructor for a changeNumber rule, you call the constructor to make a rule, add the rule to the ruleset, and change a value attribute of the rule, and then process the ruleset.
    This strikes me as...extremely goofy. For two reasons, first the ruleset creation function should be parametrized with the value you want to change, and second, that you go change the rule's attributes after you have added it to a ruleset. Also, while this works in this example, I don't think it's appropriate to have the xpath attribute hardcoded in the rule creation function -- it's much plausible that you want a function that constructs a rule that changes some arbitrary tag to some arbitrary value.
    So, anyhow, if you were going to stick with the constructor paradigm, then I would change from:
    var changeNumber = new ChangeDocumentNumber();
    var ruleSet = [changeNumber, changeDescription];
    changeNumber.value = "5678";
    __processRuleSet(doc.xmlElements[0], ruleSet);
    to:
    var changeNumber = new ChangeDocumentNumber();
    changeNumber.value = "5678";
    var ruleSet = [changeNumber, changeDescription];
    __processRuleSet(doc.xmlElements[0], ruleSet);
    But I don't like this, because it's not parametrized reasonably. I would want something like:
    var changeNumber = new ChangeValue("//DocumentNumber", "5678");
    var changeDescription = new ChangeValue("//DocumentDescription", "New descr.");
    var ruleSet = [ changeNumber, changeDescription ];
    But because of my disdain for classical inheritance in JavaScript, I would instead write it as:
    function changeValue(xpath, newValue){
      return {
        name: "ChangeValue",
        xpath: xpath,
        apply: function(Element, processor) {
          if (newValue) {
            element.contents = newValue;
          return true;
    var changeNumber = changeValue("//DocumentNumber", "5678");
    var changeDescription = changeValue("//DocumentDescription", "New descr.");
    Because I think that a lot clearer about what is going on without introducing confusion.
    Edit: removed "this.value" from the above and just used newValue directly.
    But if you're defining a lot of rules with different apply functions, this is a very cumbersome strategy. You have all this boilerplate for each function that is basically the same but the apply function is different. This is leads to a lot of wasted code duplications. Why would your apply function be different? Well, that would usually be if you are writing functions that move around XML elements within the document hierarchy, or other things that are not simply changing the value of an element.
    I would much prefer to write this as:
    var changeRule = makeRule("change",
      function(element, ruleProcessor, newValue) {
        element.contents = newValue;
    var changeNumber = changeRule("//DocumentNumber", "5678");
    var changeDescription = changeRule("//DocumentDescription", "New descr.");
    var ruleSet = [ changeNumber, changeDescription ];
    This kind of syntax makes it much more compact to create arbitrary rules with different apply functions. In retrospect, the makeRule() function is named wrong, because it returns a function that makes a rule. Perhaps it'd be more reasonable if it was called makeRuleMaker().
    Anyhow, the downside is that the makeRule() function is kind of heinous. I wrote this in March in Re: How to shift content with in cell in xml rules table. But:
    //// XML rule functions
    // Adobe's sample for how to define these is HORRIBLE.
    // Let's fix several of these problems.
    // First, a handy object to make clearer the return values
    // of XML rules:
    var XMLmm = { stopProcessing: true, continueProcessing: false};
    // Adobe suggest defining rules constructors like this:
    //   function RuleName() {
    //       this.name = "RuleNameAsString";
    //       this.xpath = "ValidXPathSpecifier";
    //       this.apply = function (element, ruleSet, ruleProcessor){
    //       //Do something here.
    //       //Return true to stop further processing of the XML element
    //       return true;
    //       }; // end of Apply function
    // And then creating a ruleset like this:
    //   var myRuleSet = new Array (new RuleName, new anotherRuleName);
    // That syntax is ugly and, and is especially bad if
    // you need to parametrize the rule parameters, which is the only
    // reasonable approach to writing reasonable rules. Such as:
    //   function addNode(xpath, parent, tag) {
    //       this.name = "addNode";
    //       this.xpath = xpath;
    //       this.apply = function (element, ruleProcessor) {
    //           parent.xmlElements.add(tag);
    //           return XMLmm.stopProcessing;
    // and then creating a ruleset like:
    //   rule = new Array (new addNode("//p", someTag));
    // So instead we introduce a makeRule function, that
    // allows us to leave behind all the crud. So then we can write:
    // addNode = makeRule("addNode",
    // function(element, ruleProcessor, parent, tag) {
    //     parent.xmlElements.add(tag);
    //     return XMLmm.stopProcessing;
    // and use:
    // rule = [ addNode("//p", someTag ];
    function makeRule(name, f) {
        return function(xpath) {
            var
                //xpath=arguments[0],
                   // "arguments" isn't a real array, but we can use
                   // Array.prototype.slice on it instead...
                   args=Array.prototype.slice.apply(arguments, [1]);
            return {
                name: name,
                xpath: xpath,
                apply: function(element, ruleProcessor) {
                        // Slice is necessary to make a copy so we don't
                        // affect future calls.
                    var moreargs = args.slice(0);
                    moreargs.splice(0, 0, element, ruleProcessor);
                    return f.apply(f,moreargs);

  • Indesign Script Guide

    Hi, I am new to Indesign Scripting, I need some Basic Scripting guide for XML and Non-XML automation,

    Thanks for your response, I had collected the Scripting Resources from adobe.com,
    And am looking for the scripting guides developed by other devlopers.
    hope it’s funny but many programmers have its own documentation for scripting, It will helpful for beginners like me.,

  • New to indesign scripting

    Hi Friends,
    I am new to indesign scripting in vb.net. I just want to know how to start the scripting. I need some basics. Please let me know if there is any good sites to improve my basics and dive into the development.
    Thanks,
    Suresh

    Hi Ole,
    In that tutorial, only javascipt, vbscript and applescripts are availble. I am looking for vb.net scripts. Now i am trying with that above mentioned scripts.
    Thanks,
    Suresh

  • Basic questions on InDesign server

    Hi All,
    I'm studying InDesign server and have some basic doubts which are given below:
    (1) I've already developed using JS/VB.net, can I directly use those tools directly in InDesign server without modifying anything?
    (2) How to practice with InDesign server, since I didn't find any trial version of InDesign server?
    (3) Since InDesign server not having any UI, how we an run, any basic ideas?
    Thanks,
    Praveen

    1. That depends on what you have developed... User interface elements are no good in server code, for example.
    2. I guess the best way would be to become an Adobe partner http://partners.adobe.com/.
    But: there is a trial version if InDesign Server: https://www.adobe.com/cfusion/tdrc/index.cfm?product=indesign_server
    3. InDesign server and desktop are essentially the same. Primarily I would suggest developing on the desktop version.
    Logging to file, and starting InDesign Server with a console open are two ways of debugging on the server.
    Message was edited by: Andreas Jansson. Adding info since I just noticed that there is a trial version of InDesign Server.

  • How to Run Indesign Script in a file from plugin code in CS4?

    Hi,<br />I have the code to execute the InDesign script stored in external file for InDesign CS3.<br /><br />InterfacePtr<IScriptManager> scriptManager(Utils<IScriptUtils>()->QueryScriptManager(kJavaScriptMgrBoss)); <br />InterfacePtr<IScriptRunner> scriptRunner(scriptManager, UseDefaultIID()); <br />     IDFile scriptFile(scriptFilePath); <br />     if (scriptRunner->CanHandleFile(scriptFile)) <br />     { <br />       ScriptData returnValue; <br />       PMString errorString; <br />       ErrorCode error = scriptRunner->RunFile(scriptFile); <br />         ASSERT(error == kSuccess); <br />     } <br /><br />But the RunFile() method is cs4 expects an additional argument of the type RunScriptParams. <br />Someone please show me with a code snippet on how to excute a script file in CS4??

    Dear Ian
      Here I'm used the below coding in CS3, Its working fine....
    //In CS3 Coding
      PMString jsFullPath("c:\\windows\\sample.jsx"); // a path to my java script file
    do
    const
    IDFile outFile(jsFullPath);InterfacePtr<IScriptManager> scriptManager(Utils<IScriptUtils>()->QueryScriptManager(kJavaScriptMgrBoss));
    ASSERT( scriptManager ) ;
    InterfacePtr<IScriptRunner> scriptRunner(scriptManager,UseDefaultIID());
    ASSERT( scriptRunner ) ;
    if(scriptManager){
    InterfacePtr<IScriptRunner>scriptRunner(scriptManager,UseDefaultIID());
    RunScriptParams params(scriptRunner);
    ErrorCode err = scriptRunner->RunFile(outFile, kTrue, kFalse);
    while(kFalse);
    But the same time I used this coding in CS4, Its not woking
    //In CS4 Coding
    PMString jsFullPath("c:\\windows\\MacID\\BIN\\sample.jsx"); // a path to my java script file
    do
    const
    IDFile outFile(jsFullPath);InterfacePtr<IScriptManager> scriptManager(Utils<IScriptUtils>()->QueryScriptManager(kJavaScriptMgrBoss));
    ASSERT( scriptManager ) ;
    InterfacePtr<IScriptRunner> scriptRunner(scriptManager,UseDefaultIID());
    ASSERT( scriptRunner ) ;
    if
    (scriptManager){
    InterfacePtr<IScriptRunner>scriptRunner(scriptManager,UseDefaultIID());
    RunScriptParams params(scriptRunner);
    ErrorCode err = scriptRunner->RunFile(outFile, params);
    while(kFalse);
    I changed the "RunFile" arguments also
    RunScriptParams params(scriptRunner);
    ErrorCode err = scriptRunner->RunFile(outFile, params);
    But Still I'm facing the problem in InDesign CS4.  That's mean  "Adobe InDesign CS4" shout down for serious error happend.
    Please kindly help me, for solving this problem.
    Thanks & Regards
    T.R.Harihara Sudhan
    Message was edited by: Adobe-InDesign CS4

  • InDesign Scripting Guide/Apple Script

    The command
    set myTop to top of margin preferences of myPage
    described in the InDesign Scripting Guide doesn't work with Indesign CS2. Does anyone can help?
    Thanks

    Hi Morenga 65,
    Try:
    tell margin preferences of myPage
    set myTop to top
    end tell
    But, as Dave says, do come to the Scripting Forum--there's lots of good stuff there!
    Thanks,
    Ole

  • How do I handle Style Groups in InDesign Scripting?

    Hi,
    I am relatively new to InDesign scripting.
    I'm trying to map Paragraph Styles to CSS, and it seemed to be working fine, till I came across Style Groups -
    Styles belonging to a group are identified as - Root Style Group name : Child style group name : ...... : Style name
    Because of this paragraph style  <Style name> was not mapping to the TOC style <Root Style Group name : Child style group name : ...... : Style name> and my TOC styles were not correctly mapping.
    I wrote a fix for this in my app, by fetching parent groups and appending to a string - which i check in the TOC style entries.
    Before calling this a FIX, I need to confirm if there are any more hierarchies/represnetations that could be used to represent a Paragraph Style as a TOC style? I don't want to see that a week later I discover something like <Style : Nested paragraph style> as a TOC style and then I'd have to fix my fix!
    Thanks.

    Hi,
    If YourPara is a paragraph style in myDoc and defined inside group of styles named myStGroup
    you can refer to it using:
    myDoc.paragraphStyleGroups.item("myStGroup").paragraphStyles.item("YourPara");
    Jarek

  • It´s possible to call to Adobe Professional 8 with Indesign scripting (.jsx) [JS/CS3] ?

    Hello, I would like to know if it´s possible to communicate with Adobe Professional through a Indesign script (.jsx). I need to convert the pdf file that I export from Indesign to specific standard type that is only available in Adobe Professional.
    I want to save the Indesign generated file with Adobe Professional and obtain the pdf that I particularly need.
    I would like to know if there is a way to do this.
    Thank u,
    Peter

    That's nothing!
    An engineer and I contacted Adobe technical support by phone to ensure the PC I was having custom built was configured to its optimum. They advised XP64 as the best operating environment. After that discussion we had to completely revise procurement, etc to get the bits and compatible XP64 compatible software, putting the build project back a few weeks as well, Imagine how I laughed when I found out on one of these forums that XP64 is the worst choice and totally unsupported by CS4!
    I have written to Shantanu Narayen, Adobe CEO and didn't even get an acknowledgement I raised this last week on the Adobe stand at BVE and was told they'd get someone to contact me asap but guess what, niet...! To be fair there has been one Adobe executive that recognises the problem and the damage poor customer support is causing the company; he has been as helpful as he can. Unfortunately, it seems the overall Adobe culture at the top is "get the money and run". If your problem goes beyond what's already on their web pages, tough luck!
    Regards,
    Graham

  • Call Photoshop script from Indesign script CS4 JS

    Hi, I open Photoshop linked file from InDesign in Photoshop and I need same InDesign script to run Photoshop script on the file. How I can call the Photoshop script from InDesign script.
    Thank you very much for your help.
    Yulia

    Thank you, Kasyan.
    800 lines of script is little be intimidating.
    What we are trying to achieve is to open jpgs in Photoshop and resave them as tiffs and replace same jpg with corresponding tiff in Indesign as it was placed before.
    Is there a way to call Photoshop from Indesign through appleScript.
    I have most of the script done for Indesign and I have Photoshop shript ready that saves jpgs as tiffs done. I am only missing the part where I can call this existing Ph. script from Indisign.
    We prefer not to use BridgeTalk if possible, because we have a lot of programs open and running in the same time, and would like to avoid to open one more program (BridgeTalk).
    Thank you very much for your great help.
    Yulia

  • I am new in indesign scripting, please tell me how to write a script to get  content of a element in xml and then sort all the content

    I am new in indesign scripting, please tell me how to write a script to get  content of a element in xml and then sort all the content

    Hi,
    May the below code is useful for you, but I dont know how to sort.
    Edit the tag as per your job request.
    alert(app.activeDocument.xmlElements[0].contents)
    //Second alert
    var xe = app.activeDocument.xmlElements[0].evaluateXPathExpression("//marginalnote");
    alert(xe.length)
    for(i=0; i<xe.length; i++)
        alert(xe[i].texts[0].contents)
    Regards
    Siraj

  • Can InDesign or an InDesign script solution tell me if I have hidden elements in a document?

    Can InDesign or an InDesign script solution tell me if I have hidden elements in a document? As in the following examples:
    • I import a picture file and some, or all of the file is not viewable in the picture frame, can InDesign alert me of it?
    • I accidentally place a picture so that it is completely covering another picture, can InDesign alert me the an image is being completely covered by another?
    I am using InDesign CS on a Mac running OSX version 10.4.11.
    Thanks,
    Elliott

    Not out of the box. Perhaps with a script. You can ask in the scripting forum.

  • Basic Doubts

    Hello Experts,
    Please any one of them clarify my some of the Basic doubts
    1.Reg ODS activation failure in Process chain,I know how to correct incase if ods activation failed.I want to know,What could be the reason for failure and in background whats happening(Techincally)
    2.Reg Attribute change run failure in process chain,what could be the reason.(technically)
    3.Whats is the purpose of trfc and what we have to check in SM58.
    4.What is the diff between the IDOC(transfer method) and Idoc which is used to transfer the data in PSA transfer method..(For ex - If i am using the PSA transfer method,even there to transfer the datapackets,we are using Idoc)
    5.Some of the time,I am getting the error like this"Non updated idoc in source system and error mesg from the source system/Business warehouse.
    This mean,what could be the reason.(Frequently i am getting the above errors and If i used the repeat option,It has been corrected and loaded succesfully)
    6.How many datasources can be assigned to one Infosource(Is any limit is there)
    I request you to advise on the above doubts and I will assign the points.
    Thanks in advance
    Regards
    Kumar

    Hi,
    1. During the month end procedures and week ends the number of records will be more rather than the week days, so the data packages defined will run for long time, so we will be getting Time out error, we have to manually activate the data packages.
    2. if you r not using Attribute change run, then your Master data(text, attribute, hierarchy wont get activated when you run a process chain)
    .so it is mandatory that once you fill the master data u have to activate those, for that we need Attribute change run.
    3. tRFC calls which transfer IDocs use the function module IDOC_INBOUND_ASYNCHRONOUS at reception If an IDoc in the sending system has been passed to tRFC (IDoc status "03"), but has not yet been input in the receiving system, this means that the tRFC call has not yet been executed.
    In the standard SAP system, if tRFC errors occur, a background job is generated to re-establish the connection. In certain circumstances this could result in a large number of background jobs being started that completely block background processing. To cancel a background job if tRFC errors occur use program RSARFCEX to restart tRFC.we go for SM59 transaction for this.
    Choose Destination ® tRFC Options and select the option Suppress Background Job at Comm. Error. 
    4. PSA :
    The data is sent directly from the source system to the BW and it  is stored in the PSA (Persistent Staging Area), we can update  automatically/manually to corresponding Info providers .The transfer type here is called the TRF (Transactional Remote Function).
    IDOC :
    The data is packed into IDocs by the source system and sent to the Business Information Warehouse. In BW the data is saved persistently and intransparently in the IDoc store. we have some prerequisite here to use this method ,Transfer  transfer structure must not have more than 1000 Bytes in the character format.
    6. One datasource can be assigned to one info source.

  • Oracle Business INtelligence -installation, basic doubts

    can i shoot oracle BI installation related basic doubts, and other issues that may arise in this forum ???

    if it's enterprise edition.. you can post here..
    Business Intelligence Suite Enterprise Edition

  • Canvas support in Indesign scripts?

    Hi there,
    short version:
    I was wondering if it is possible in any way to include auto generated raster content (Using canvas api for example) in in-design using JavaScript?
    Long version:
    I noticed that In-design supports a very old version of JavaScript, and since I'm pretty new to InDesign scripting I thought it's better to get informed about its capability / limitations before planing about what to do with it! I wrote a Javascript code (not in in-design script) that generates unique random patterns of motifs, now I'm interested if I can integrate it in in-design scripts so it would put one of this raster images in each page of an in-design document (IE: left and right side of each relatively facing pages);
    also since my first guess after studying a bit In-design's object-model documentation was that it is very much limited to just what is possible through the software UI itself (and not any/some thing new/more), then I was wondering (in that case) how much is it possible to hook an script to an external script, and sending and receiving data/vars between them; like putting both scripts in the same folder, the first one calls the other one giving it some info (document dimensions, etc.), the second script runs (outside of ID), put the images on disk and return to main script when it's done!! :/
    I have some other solution sketches as well in my mind, but wanted to have your input before doing anything ridiculous!! :-)))
    I really appreciate your in-put on this,
    thx, mim,

    And yeah! It looks like I can execute an external file of any type!
    After reading and looking for a while, finally:
    In 52th page of documentation it says:
    execute()
    fileObj.execute ()
    Opens this file using the appropriate application, as if it had been double-clicked in a file browser. You can use this method to run scripts, launch applications, and so on
    Voila! Exactly what I need (If what I think I need is actually what I need! indeed!!)
    I'll try to see if it works later on (impatient actually!), and thx again!
    ,mim

Maybe you are looking for

  • How to set up multiple log4j configurations for multiple WAR packages?

    hi all, the EAR that i am trying to deploy has multiple WARs. I need to configure separate loggers for each these WARs. Could any of experts can help me out.

  • I want to create an asset and add to existing asset class,

    Hi I am creating an asset builing,  and adding to asset class,  and when i am using the trans code: AS01 it showing an error , Customizing, inconsistency -Missing / incorrect  and entry in the table TO93B i am not able to understand what has to be do

  • How do I get the date of a file in an FTP?

    As stated in the subject. I am at wits end trying to get the date of a file from FTP(Stuck for days). I tried the "URLConnection" Class but could only get me the size of the file with "getContentLength()" "getContentDate()" & "getLastModified()" both

  • Adobe Reader 9 not opening some PDF's

    I think I'm having issues with Reader 9.  I create reports in MS Access and OutputTo PDF.  One of the reports is fairly complex and actually prints out sideways.  When I email these reports to customers, some can open them, some cannot.   If a custom

  • How to shuffle albums in nano 7?

    New to apple and need step by step, please.