• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Auto data merge all csv files in folder

Explorer ,
May 13, 2018 May 13, 2018

Copy link to clipboard

Copied

Hello,

I have a folder with 10 csv files and an Indesign template file.

I need to:

1. open Indesign template file

2. get all csv files in folder to indesign

3. merge and record all csv

4. save indesign files with the cvs names

Is that possible to do?

Thank you Guys!

TOPICS
Scripting

Views

1.9K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Explorer , Jun 01, 2018 Jun 01, 2018

Hello,

I finally came out with this code that works perfectly to me:

// templateFile path

var myTemplate = File ("~/Desktop/_templates/Template_01.indt");

app.open(myTemplate); 

// OutputFolder path

var myOutputfolder = Folder ("~/Desktop/_folderOut/"); 

// TxtFolder path

var myTxtFolder = Folder ( "~/Desktop/_txt/" );

   

    if ( myTxtFolder != null ) {

    var myTxtFiles = [];

    var myAllTxtFilesList = myTxtFolder.getFiles();

            for (var f = 0; f < myAllTxtFilesList.length; f++) {

          

...

Votes

Translate

Translate
Community Beginner ,
May 14, 2018 May 14, 2018

Copy link to clipboard

Copied

I think so:

1. open Indesign template file

var file = new File(templateFolder + "template.indt");

app.open(file);

2. get all csv files in folder to indesign

for (var i = 0; i < 10; i++) {

     csvName = "csv"+i+".csv";

     csvFile = new File(csvPath + csvName);

}

3. merge and record all csv

I didn't understand this

4. save indesign files with the cvs names

app.activeDocument.save(csvName);

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
May 18, 2018 May 18, 2018

Copy link to clipboard

Copied

Hello davidc19923048,

I'm sorry, but the script it's not working.

I get the error: "templateFolder is undefined"

In the step 3 you didn't understood, I need to create merged documents.

Thank you very much!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
May 19, 2018 May 19, 2018

Copy link to clipboard

Copied

Hi Antony,

you have to understand that you posted in the Adobe InDesign Scripting Forum where ( mostly ) scripters hang around.

A snippet like the one by David is showing you just the way to write your own code or is just showing a principle of coding. It seldomly is meant to be a full script that is working in every case, in every occassion on data David cannot see into.

About the error message: Of course it says "templateFolder is undefined.".

It's your job to define the variable templateFolder so that it is a valid folder path to your data.

David obviously cannot know where your data is.

Regards,
Uwe

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
May 26, 2018 May 26, 2018

Copy link to clipboard

Copied

Thank you Guys for your reply!

I'm a scripter beginner, but in the past few weeks i've been struggling to get the code right.

I came out with this code witch It does almost what I need:

1. open Indesign template file

2. get the data source file "Example_01.txt" from the folder "_txt" to indesign

3. merge data

4. save an indesign file with the name "File9.indd"

main ()

function main () {     

    // create a path for the template files  

    var Templates = File("~/Desktop/_templates/Template_01.indt");

   

    // open the template 

    app.open(Templates);

   

    // create a path for a Indesign file   

    var dataSource = Folder ("~/Desktop/_txt/Example_01.txt"); 

   

    // merge and record data   

    app.activeDocument.dataMergeProperties.selectDataSource(dataSource);

    app.activeDocument.dataMergeProperties.mergeRecords();

   

    // create a path for the new indesign file   

    var folderOut = Folder ("~/Desktop/_folderOut/"); 

   

    for (var i = 0; i < 10; i++) { 

    inddName = "File"+i+".indd"; 

    inddFile = Folder (folderOut + new File (inddName));  }     

    //save the file 

    app.activeDocument.save(inddFile);

   

    //close the file 

    app.activeDocument.close(); 

But what I really need is:

1. open Indesign template file - OK

2. get all "txt" files  from the folder "_txt" to indesign (I've got 15 "txt" files)

3. merge data - OK

4. save individual indesign files with the original names of each "txt" files

Can anyone help me?

Best regards,

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jun 01, 2018 Jun 01, 2018

Copy link to clipboard

Copied

Hello,

I finally came out with this code that works perfectly to me:

// templateFile path

var myTemplate = File ("~/Desktop/_templates/Template_01.indt");

app.open(myTemplate); 

// OutputFolder path

var myOutputfolder = Folder ("~/Desktop/_folderOut/"); 

// TxtFolder path

var myTxtFolder = Folder ( "~/Desktop/_txt/" );

   

    if ( myTxtFolder != null ) {

    var myTxtFiles = [];

    var myAllTxtFilesList = myTxtFolder.getFiles();

            for (var f = 0; f < myAllTxtFilesList.length; f++) {

            var myFile = myAllTxtFilesList;

            if (myFile instanceof File && myFile.name.match(/\.txt$/i)) {

                myTxtFiles.push(myFile);

           

            // merge and record data   

            app.activeDocument.dataMergeProperties.selectDataSource(myFile);

            app.activeDocument.dataMergeProperties.mergeRecords();

           

    // set the OutputFolder and fileExtension  to ".indd"

    var mySavedDocument = Folder (myOutputfolder + new File (myFile.name.replace(/\.txt$/i, ".indd")));

             

    // save the file 

    app.activeDocument.save(mySavedDocument);

    // close the file 

    app.activeDocument.close();

  }

  }

}

Thank you guys!

Best regards!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 24, 2020 Nov 24, 2020

Copy link to clipboard

Copied

LATEST

Is it possibile to add a command line before closing the data merged document, tu export every file for print using a specific pdf preset named "calendarmerge" for example, using the same name of the csv file merged?

Thanks

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines