.js script edit/help, I need it to take the "STATE" column out of a .csv file and input it in every .htm file for a perl script..

Ok, Background:

With some excellant help, I was able to make a script that takes data out of columns in a .csv file and changes a htm template and then saves it under the venue name(all lower case and spaces replaced with _'s)

Now I need it to input the venue state in <!--VENUE STATE--> format at the VERY top of every page so a perl script can come through and read it and input it on this page as links( http://www.ticketstogo.com/venues/states/index.htm )under the appropriate state which will also have the <!--VENUE STATE--> for recognition and inserting of the link..

addendum : I know other scripting languages could do all this much quicker, and I know htm is a old and dying language, but for this project I have chosen it, so plz .js and .htm help only.

The .js file that reads the .csv file and changes the template.....All i need it to do now is insert <!--VENUE STATE--> at the top of all the pages it creates.

-------------------------------------------------------------------------

var template = "C:\\aa\\venuetemplate.htm";
var list = "C:\\aa\\venues.csv";
var dstFolder = "C:\\aa\\venues\\";

var fso =new ActiveXObject("Scripting.FileSystemObject");

//read template
var templFile = fso.OpenTextFile(template, 1);
var templText = templFile.ReadAll();
templFile.close();
WScript.StdOut.WriteLine("Template length is: " + templText.length);

//process venue list
var listFile = fso.OpenTextFile(list, 1);
var head=listFile.ReadLine(); //skip header
WScript.StdOut.WriteLine("Header line: " + head);
while(!listFile.AtEndOfStream) {
  var line=listFile.ReadLine();
  WScript.StdOut.WriteLine("processing line: " + line);
  var fields=line.split(",");   // Comma Delimited
//var fields=line.split("\t");  // Tabs
  WScript.StdOut.WriteLine("fields#: " + fields.length);
  try {
    var VenueID=fields[0];
    WScript.StdOut.WriteLine("venue id: " + fields[0]);
    var VenueName=fields[1];    
    WScript.StdOut.WriteLine("venue name: " + fields[1]);
    var fname=VenueName.toLowerCase().replace(/ /g, "_") + ".htm";
    WScript.StdOut.WriteLine("output filename: " + fname);
    var dstFileFullname=fso.BuildPath(dstFolder, fname);
    WScript.StdOut.WriteLine("dest filename: " + dstFileFullname);
    var dstFile = fso.CreateTextFile(dstFileFullname, true);    
    dstFile.write(templText.replace(/_VENUE_NAME_/g, VenueName).replace(/_VENUE_ID_/g, VenueID));
    dstFile.close();
   }
   catch(e) {
    WScript.echo("Error processing venue id " + VenueID + " with name '" + VenueName + "'");
   }
               
}
listFile.close();





the .cvs file
http://www.ticketstogo.com/aadownload/venues.csv

and the template
http://www.ticketstogo.com/aadownload/venuetemplate.htm
LVL 2
CaiapfasAsked:
Who is Participating?
 
lbertaccoConnect With a Mentor Commented:
Caiapfas, you did it perfectly.
You just didn't update the line reporting what's going on that we added for debugging purposes.
That is
WScript.StdOut.WriteLine("venue name: " + fields[1]);
should be
WScript.StdOut.WriteLine("venue state: " + fields[2]);
But actually now that the script works, you could remove these lines alltogether.

Also I'd use _VENUE_STATE_ as the marker (rather than just _STATE_) for more uniformity.
0
 
KavarConnect With a Mentor Commented:
unless I am really mistaking what you want change this line
dstFile.write(templText.replace(/_VENUE_NAME_/g, VenueName).replace(/_VENUE_ID_/g, VenueID));
to
dstFile.write("<!--VENUE STATE-->" & templText.replace(/_VENUE_NAME_/g, VenueName).replace(/_VENUE_ID_/g, VenueID));
0
 
CaiapfasAuthor Commented:
No, I dont want to replace/change anything, I want to add, I need the script to keep doing exactly what its doing right now, but i need the new function added... function being adding ("<!--VENUE STATE-->"  at the top of every page it creates from the csv file.

and it actually places VENUS STATE with the right venues state.
example : <!-- Texas --> for Hobby Center
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
CaiapfasAuthor Commented:
Ok, let me explain a little  more, there are 3 columns in the .csv file
VenueID      VenueName      State
right now the script it taking(line by line) VenueID and looking in the template and replaceing _VEUNE_ID_
then it taking VeuneName and replaceing _VENUE_NAME_
Now, what I would like to add is State handleing..
Take State column 3 and replace _STATE_ in the htm/template file.
0
 
Dustman2000Commented:
var i = 0;
while(!listFile.AtEndOfStream) {
  var line=listFile.ReadLine();
  WScript.StdOut.WriteLine("processing line: " + line);
  var fields=line.split(",");   // Comma Delimited
//var fields=line.split("\t");  // Tabs
  WScript.StdOut.WriteLine("fields#: " + fields.length);
  try {
    var VenueID=fields[0];
    WScript.StdOut.WriteLine("venue id: " + fields[0]);
    var VenueName=fields[1];    
    WScript.StdOut.WriteLine("venue name: " + fields[1]);
    var fname=VenueName.toLowerCase().replace(/ /g, "_") + ".htm";
    WScript.StdOut.WriteLine("output filename: " + fname);
    var dstFileFullname=fso.BuildPath(dstFolder, fname);
    WScript.StdOut.WriteLine("dest filename: " + dstFileFullname);
    var dstFile = fso.CreateTextFile(dstFileFullname, true);    
    if(i==0){
       dstFile.write("<!--VENUE STATE-->\n");
    }
    dstFile.write(templText.replace(/_VENUE_NAME_/g, VenueName).replace(/_VENUE_ID_/g, VenueID));
    dstFile.close();
   }
   catch(e) {
    WScript.echo("Error processing venue id " + VenueID + " with name '" + VenueName + "'");
   }
   i++;
}
0
 
CaiapfasAuthor Commented:
no I dont want it to write <!--Venue state-->!!!!
I only want it to replace _STATE_ in the template, like it does _Venue_ID_ and _VENUENAME_, before it saves the file.
so it replaces _STATE_ with the correct state for that venue name and venue id....look at the csv file...
0
 
CaiapfasAuthor Commented:
the benefit of having it find and replace _STATE_ is I can have it put the correct state , anywhere on the page, like I can for _VENUE_NAME_ and _VENUE_ID_
0
 
CaiapfasAuthor Commented:
so in effect, I dont want to change the script at all, just add a handling for column 3 a.k.a States..
the script searchs the .csv file and then takes the data from column 1 (Venue ID) and does a search and replace in the template for _VENUE_ID_
then
for column 2 (VenueName) does a search and replace for _VENUE_NAME_
and NOW for column 3 (STATES) does a search and replace for _STATES_ in the template(NOTE: unless there is no third column then it ingnores this VAR) then saves the template as the VENUE name in all lower case and replaces spaces with _'s

I don't want the original script changed, unless necessary... just the new var added..
0
 
CaiapfasAuthor Commented:
so the only thing I need help with is

column 3 (STATES) I want it to do search and replace for _STATES_ in the template(NOTE: unless there is no third column then it ingnores this VAR)
0
 
CaiapfasAuthor Commented:
ok, fixed it

var template = "C:\\aa\\venuetemplate.htm";
var list = "C:\\aa\\venues2.csv";
var dstFolder = "C:\\aa\\venues\\";

var fso =new ActiveXObject("Scripting.FileSystemObject");

//read template
var templFile = fso.OpenTextFile(template, 1);
var templText = templFile.ReadAll();
templFile.close();
WScript.StdOut.WriteLine("Template length is: " + templText.length);

//process venue list
var listFile = fso.OpenTextFile(list, 1);
var head=listFile.ReadLine(); //skip header
WScript.StdOut.WriteLine("Header line: " + head);
while(!listFile.AtEndOfStream) {
  var line=listFile.ReadLine();
  WScript.StdOut.WriteLine("processing line: " + line);
  var fields=line.split(",");   // Comma Delimited
//var fields=line.split("\t");  // Tabs
  WScript.StdOut.WriteLine("fields#: " + fields.length);
  try {
    var VenueID=fields[0];
    WScript.StdOut.WriteLine("venue id: " + fields[0]);
    var VenueName=fields[1];    
    WScript.StdOut.WriteLine("venue name: " + fields[1]);
    var VenueState=fields[2];    
    WScript.StdOut.WriteLine("venue name: " + fields[1]);
    var fname=VenueName.toLowerCase().replace(/ /g, "_") + ".htm";
    WScript.StdOut.WriteLine("output filename: " + fname);
    var dstFileFullname=fso.BuildPath(dstFolder, fname);
    WScript.StdOut.WriteLine("dest filename: " + dstFileFullname);
    var dstFile = fso.CreateTextFile(dstFileFullname, true);    
    dstFile.write(templText.replace(/_VENUE_NAME_/g, VenueName).replace(/_VENUE_ID_/g, VenueID).replace(/_STATE_/g, VenueState));
    dstFile.close();
   }
   catch(e) {
    WScript.echo("Error processing venue id " + VenueID + " with name '" + VenueName + "'");
   }
               
}
listFile.close();



is this the proper way ???is the script ok?
0
 
CaiapfasAuthor Commented:
lbertacco,

Thank you so much, I learned how to add it to the script from your examples, I learn best that way.
will you check out this question? http://www.experts-exchange.com/Programming/Q_20935392.html
0
 
CaiapfasAuthor Commented:
ok
im trying to split the points betwen kavar and ibertaco, but i keep getting this error
Error
You may not Split Points for this question
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.