The renewal maintenance has officially ended for Progress iMacros effective November 30, 2023.
This Wiki site will also no longer be moderated from the Progress side.
Thank you again for your business and support.
Sincerely, The Progress Team
Difference between revisions of "Form Filling"
Line 1: | Line 1: | ||
+ | ===Introduction=== | ||
+ | |||
Are you tired of filling out the same form over and over again? Then let iMacros help you. Simply put all data to be input into a very straightforward and easily understandable text file and iMacros can read the data from there and submit it to the web site - completely automatic, without your interaction! | Are you tired of filling out the same form over and over again? Then let iMacros help you. Simply put all data to be input into a very straightforward and easily understandable text file and iMacros can read the data from there and submit it to the web site - completely automatic, without your interaction! | ||
Revision as of 08:00, 26 April 2007
Introduction
Are you tired of filling out the same form over and over again? Then let iMacros help you. Simply put all data to be input into a very straightforward and easily understandable text file and iMacros can read the data from there and submit it to the web site - completely automatic, without your interaction!
The data source can be in either of two different formats: a text file with a list of variables and their values of the form key=value or as a comma separated text file (CSV format). A text file in CSV format can be generated and edited by Microsoft Excel and many other applications.
As a rule of thumb the "list of variables" format is recommend if you have many different variables but only one or a few value(s) for each variable (for example, your detailed address data that you use to fill out online forms). The CSV format is most appropriate for use with a few variables with many different values (for example, a long list of CD's that you want to submit to an auction web site).
More advance users might connect directly to databases to retrieve the data.
(Related example macros: Demo-Datasource, Demo-Loop-CSV-2Web) (Related example script: Datasource-2-web.vbs, File-2-web.vbs, File-2-web-Method2.vbs, Database-2-web.vbs)
Input from Comma Separated Data (CSV) File
(Related example macros: Demo-ReadCSV) (Related example script: CSV-2-web.vbs, Database-2-web.vbs)
iMacros allows you to specify a text file with comma separated values to be used as input. Imagine, for example, that you want to submit a list of CD's to an online auction. Here is the list of the CD's in the comma separated format:
"ARTIST" , "ALBUM TITLE" , "PRICE" "Beatles", "Abbey Road", "13.49" "Beatles", "The Beatles 1,2,3" , "25.49" "Mozart" , "Symphonies No.40 & 41", "9.98" "Mozart", "Requiem", "7.50"
Note: Quotation marks are optional in most cases. They are only required if the value itself contains a comma.
We now need to tell the iMacros macro where the data input file can be found. For that we use the built-in variable !DATASOURCE
SET !DATASOURCE OnlineAuction.csv
If you do not use any path information (like C:\myPath\) in the !DATASOURCE value the file is assumed to lie in the standard datasources directory, which can be specified in the Paths tab of the Options dialog. The default directory is in the datasources\ directory of your iMacros installation (e.g. C:\Program Files\iMacros\datasources\).
We then need to tell iMacros how many columns the CSV file has in each line. We do that by using the !DATASOURCE_COLUMNS variable:
SET !DATASOURCE_COLUMNS 3
This number must match the exact number of columns in the input file, even if you do not use some columns.
Since we want to insert all datasets into the form we need to loop over the macro, each time inserting the next CD. Therefore, we need to tell iMacros in which line of the datasource we currently are. We do this using the built-in variable !DATASOURCE_LINE. By cunningly using the built-in variable !LOOP we let iMacros take care of the counting:
SET !DATASOURCE_LINE {{!LOOP}}
Now we can have the macro fill out the online form with the values from the current CD dataset. We use the built-in variables !COLn, where n represents the number of the columns to put into the form element.
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Name CONTENT={{!COL1}} TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Album CONTENT={{!COL2}} TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Price CONTENT={{!COL3}}
During the execution of the macro the constants in parentheses {{..}} are replaced by the value specified in the data sources.
Input from List of Variables File
(Related example macros: Demo-Datasource) (Related example script: Datasource-2-web.vbs)
You can also use data from a list of variables input file. The information in this format is saved in the form of key-value pairs, like
key1=value1 key2=value2
To use input in that format create a plain text file that contains the information you want to submit. The first line in this input file must be
[iOpus]
In this example we create a file that contains the information on ordering "lunch". lunch.txt could look like this:
[iOpus] name=Mr.<SP>Tester main=2 drink=2 smallsizedrink=NO myremarks=Deliver<SP>to<SP>home<SP>address:
1629<SP>4th<SP>Avenue
Thanks!
Tom
We now need to tell the iMacros macro where the data input file can be found. For that we use the built-in variable !DATASOURCE
SET !DATASOURCE lunch.txt
If you do not use any path information (like C:\myPath\) in the !DATASOURCE value the file is assumed to lie in the standard datasources directory, which can be specified in the Paths tab of the Options dialog. The default directory is in the datasources\ directory of your iMacros installation (e.g. C:\Program Files\iMacros\datasources\).
After we have specified the location of the input data it is ready to use! iMacros creates variables called after the key part of the key-value pairs. The value of this variable is the value of the key-value pair. You can now use these variable to fill the form:
TAG TYPE=INPUT:TEXT FORM=NAME:TestForm2 ATTR=NAME:Name CONTENT={{name}} TAG TYPE=SELECT FORM=NAME:TestForm2 ATTR=NAME:main CONTENT={{main}} TAG TYPE=SELECT FORM=NAME:TestForm2 ATTR=NAME:drink CONTENT={{drink}} TAG TYPE=INPUT:CHECKBOX FORM=NAME:TestForm2 ATTR=NAME:C8&&VALUE:ON CONTENT={{smallsizedrink}} TAG TYPE=TEXTAREA FORM=NAME:TestForm2 ATTR=NAME:Remarks CONTENT={{myremarks}}
During the execution of the macro the constants in parentheses {{..}} are replaced by the value specified in the data sources.
Multiple Sets of Key-Value Pairs If you want iMacros to read different sets of key-value pairs for each loop add a number at the end of the key and add !LOOP to the end of the name inside the macro. The datasource input.txt could then look like this:
[iOpus] name1=Tom<SP>Tester name2=Ann<SP>Smith name3=Nicole<SP>Frank main1=2 main2=1 main3=3
The complete macro would then look like this:
SET !DATASOURCE input.txt TAG TYPE=INPUT:TEXT FORM=NAME:TestForm2 ATTR=NAME:Name CONTENT={{name!LOOP}} TAG TYPE=SELECT FORM=NAME:TestForm2 ATTR=NAME:main CONTENT={{main!LOOP}}
Input from Database
(Related example macros: Wsh-Submit-2-Web) (Related example script: File-2-web-Method2.vbs, Database-2-web.vbs)
This example only works with the Scripting Edition.
iMacros can read data directly from any Windows database using the Scripting Interface and a few lines of code.
This example code in Visual Basic Script connects to an Microsoft Access database:
' open database set rs = CreateObject("ADODB.Connection") rs.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & mypath & "IIM-TEST-SUBMIT.MDB") ' use SQL to select information sql = "select * from table1" set rs = rs.Execute(sql) ' start iMacros set iim1= CreateObject ("InternetMacros.iim") iret = iim1.iimInit iret = iim1.iimDisplay("Submitting Data from MS ACCESS") ' loop through result dataset do until rs.eof 'Set the variable iret = iim1.iimSet("-var_FNAME", rs.fields(0)) iret = iim1.iimSet("-var_LNAME", rs.fields(1)) iret = iim1.iimSet("-var_ADDRESS", rs.fields(2)) iret = iim1.iimSet("-var_CITY", rs.fields(3)) iret = iim1.iimSet("-var_ZIP", rs.fields(4)) iret = iim1.iimSet("-var_STATE-ID", rs.fields(5)) iret = iim1.iimSet("-var_COUNTRY-ID", rs.fields(6)) iret = iim1.iimSet("-var_EMAIL", rs.fields(7)) 'Run the macro 'Note: This is the SAME macro, as in the FILE-2-WEB-METHOD2.VBS example script!!! iret = iim1.iimPlay("wsh-submit-2-web") If iret < 0 Then MsgBox iim1.iimGetLastError() End If rs.movenext loop iret = iim1.iimDisplay("Done!") iret = iim1.iimExit WScript.Quit(0)