สอนใช้งาน iMacros : ตอนที่ 3 การทำซ้ำโดยนำเข้าข้อมูลจาก CSV
ในบทความสอนใช้งาน iMacros ตอนที่ 1 และตอนที่ 2 ได้นำเสนอการติดตั้ง iMacros, การสร้าง Macro โดยการ RECORD, ตัวอย่างscript และ command ที่สำคัญใน Macro, การแก้ไข Macro และการนำเข้า Macro จากภายนอก
สำหรับบทความนี้จะนำเสนอการเรียกใช้ข้อมูลจากไฟล์ CSV ซึ่งจะช่วยเพิ่มประสิทธิภาพให้ Macro ทำงานกับข้อมูลที่อยู่ในรูปเมตริกซ์ หรือข้อมูลที่สามารถจัดให้อยู่ในรูปของตารางที่มีหลายแถวหลายหลักได้ง่ายขึ้น
ในบทความนี้ผมจะนำเสนอในประเด็นต่าง ๆ ดังนี้
1. ไฟล์ CSV เป็นอย่างไร?
2. สร้างไฟล์ CSV อย่างไร?
3. หลักการ Import ไฟล์ CSV เข้ามาใน Macro ทำอย่างไร?
4. Command ที่ทำให้ Macro เรียกใช้ข้อมูลจาก CSV ไฟล์คือ?
5. ตัวอย่างสร้าง Macro ให้เรียกใช้ CSV ไฟล์ ในกรณีที่แต่ละ Webpage มีส่วน Input ข้อมูลคล้ายคลึงกัน
6. ตัวอย่างสร้าง Macro ให้เรียกใช้ CSV ไฟล์ ในกรณีที่แต่ละ Webpage ไม่เหมือนกันแต่ข้อมูลที่เราใช้ Input เหมือนกัน
ไฟล์ CSV เป็นอย่างไร?
CSV (Comma Separated Values) เป็นไฟล์ในรูปแบบที่แต่ละค่าในไฟล์ถูกคั่นด้วยเครื่องหมายจุลภาคสามารถสร้างและแก้ไขได้ใน MS Excel หรือ โปรแกรมประเภท Text Editor เช่น Wordpad หรือ Notepad เป็นต้น และยังสามารถนำมาใช้งานได้กับ iMacrosสร้างไฟล์ CSV อย่างไร?
การสร้าง CSV ไฟล์แนะนำให้ทำวิธีใดวิธีหนึ่งต่อไปนี้1 การสร้างไฟล์ CSV โดยใช้ Wordpad หรือ Notepad
การสร้าง CSV ไฟล์โดยใช้ Wordpad หรือ Notepad เป็นวิธีที่ง่ายที่สุดซึ่งทำโดย
1.1 เปิด Wordpad หรือ Notepad ขึ้นมา
1.2 พิมพ์ข้อมูลลงไปโดยแต่ละข้อมูลจะต้องคั่นด้วยเครื่องหมายจุลภาค (,) และจะนับแต่ละบรรทัดเป็นข้อมูล 1 ชุด
เช่น ในที่นี้ผมพิมพ์ข้อมูล 2 ชุดนี้ลงไปใน Wordpad หรือ Notepad
ก็จะได้ข้อมูลคือ ชื่อ email และ URL 2 ชุดที่ต่างกัน
1.3 บันทึกแฟ้มเป็นไฟล์ชื่อใดก็ได้ และให้ใส่นามสกุลเป็น .csv
2 การสร้างไฟล์ CSV โดยใช้ Ms Excel
2.1 นำข้อมูลที่ต้องการไปใส่ใน row หรือ column ตามความต้องการ โดยคุณสามารถคัดลอกข้อมูลจาก Notepad มาวางก็ได้
2.2 ในการบันทึกข้อมูลให้เลือกชนิดที่บันทึกเป็น CSV (MS-DOS) (*.csv)
หลักการ Import ไฟล์ CSV เข้ามาใน Macro ทำอย่างไร?
ถ้าผมต้องการกรอกข้อมูลชุดเดียวคือ ชื่อ, password, email และ URL บน 100 Webpage ผมก็นำ 100 Webpage นั้นไปสร้างเป็นชุดข้อมูลในไฟล์ CSV จากนั้นสร้าง Macro ขึ้นมา 1 Macro เท่านั้น ซึ่ง Macro นี้จะเรียกข้อมูลจาก ไฟล์ CSV มาคราวละ Webpage และสั่งให้ Macro ทำซ้ำจนครบ 100 Webpage ซึ่งจะเห็นว่าการใช้วิธีนี้ก็สามารถทำงานได้สำเร็จโดยไม่ต้องสร้าง Macro ขึ้นมาถึง 100 Macro เลยCommand ที่ทำให้ Macro เรียกใช้ข้อมูลจาก CSV ไฟล์คือ?
การเขียน Script และ Command ให้ Macro ทำได้โดยใช้คำสั่งที่ได้แนะนำไปในบทความ สอนใช้งาน iMacros : ตอนที่ 2 Scripts และ Commands ซึ่งขอยกมาทบทวนอีกครั้งดังนี้Command ที่ใช้ในการเรียกใช้ไฟล์ .csv
CMDLINE !DATASOURCE ชื่อไฟล์.csvหรือ
SET !DATASOURCE ชื่อไฟล์.csvหรือกรณีวางไฟล์เอาไว้นอก Folder Datasources เช่นวางไว้ที่ Drive D ก็ใช้คำสั่ง
SET !DATASOURCE D:\ชื่อไฟล์.csv
Command ที่เกี่ยวข้องกับการเรียกใช้งาน ไฟล์ .csv จาก Datasourse
Command ที่กำหนดการเรียกใช้ข้อมูลจาก Column ที่ 1 ถึง 3
SET !DATASOURCE_COLUMNS 3เลข 3 คือจำนวน Column ที่เราจะเรียกใช้ข้อมูลอาจจะกำหนดเป็น 1 หรือ 9 หรือเลขอื่น ๆ ก็ได้ขึ้นอยู่กับข้อมูลนำเข้า
Command ที่กำหนดให้ทำซ้ำโดยใช้แต่ละแถวตัวแบ่งการดำเนินการแต่ละรอบของ LOOP
SET !DATASOURCE_LINE {{!LOOP}}
Command ที่กำหนดว่าการทำงานแบบ LOOP นั้นจะทำซ้ำตั้งแต่แถวใดในไฟล์ .csv จาก Datasourse
SET !LOOP 1ถ้าใส่เลข 1 ก็แปลว่าเริ่มทำซ้ำจากบรรทัดที่ 1
จากข้างต้นที่กล่าวมาสามารถเขียนรวมกันได้เป็น
SET !DATASOURCE ชื่อไฟล์.csvและโค้ดข้างต้นนี้สามารถเอาประยุกต์กับ Macro ที่มีการเรียกใช้ CSV ไฟล์ได้เลย
SET !DATASOURCE_COLUMNS 3
SET !DATASOURCE_LINE {{!LOOP}}
SET !LOOP 1
ตัวอย่างที่ 1 ขั้นตอนการสร้าง Macro ให้เรียกใช้ CSV ไฟล์ :
ในกรณีที่แต่ละ Webpage มีส่วน Input ข้อมูลคล้ายคลึงกัน
ในที่นี้ผมขอยกตัวอย่างการสมัครสมาชิกเว็บ Pligg ของต่างประเทศจำนวน 12 แห่งด้วย iMacros ซึ่งสามารถประยุกต์ใช้ตามขั้นตอนดังนี้
ขั้นที่ 1 สร้าง Macro โดยใช้วิธีการบันทึก
โดยขั้นแรกจะต้องพิจารณาว่าในการสมัครสมาชิกเว็บ Pligg แต่ละแห่งจะต้องกรอกข้อมูลใดบ้าง ซึ่งทำได้โดยวิธีทดลองกรอกข้อมูลจริงและใช้วิธี RECORD เอาไว้
เช่น ในที่นี้ผมไปสมัครสมาชิกที่
http://www.hotscripts.ro/และทำการ Record การกรอกข้อมูลบน Webpage เอาไว้ได้ดังนี้
โค้ดที่ได้
VERSION BUILD=6700624 RECORDER=FX TAB T=1 URL GOTO=http://www.hotscripts.ro/ TAG POS=1 TYPE=A ATTR=TXT:Register TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/register/ ATTR=ID:reg_username CONTENT= username TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/register/ ATTR=ID:reg_email CONTENT=email SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:/register/ ATTR=ID:reg_password CONTENT=password SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:/register/ ATTR=ID:reg_verify CONTENT=password TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/register/ ATTR=ID:recaptcha_response_field CONTENT=Lord<SP>marams TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:thisform ATTR=NAME:submit&&VALUE:Create<SP>userจากนั้นผมก็ใช้วิธีเดียวกันบันทึกข้อมูลในการสมัครเว็บ Pligg อีกแห่งซึ่งได้โค้ดดังนี้
VERSION BUILD=6700624 RECORDER=FX TAB T=1 URL GOTO=http://www.englishdigg.com/ TAG POS=1 TYPE=A ATTR=TXT:Register TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/register ATTR=ID:reg_username CONTENT=username TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/register ATTR=ID:reg_email CONTENT=email SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:/register ATTR=ID:reg_password CONTENT=password SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:/register ATTR=ID:reg_verify CONTENT=password TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/register ATTR=ID:recaptcha_response_field CONTENT=cautdou<SP>paet TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:thisform ATTR=NAME:submit&&VALUE:Create<SP>user
หมายเหตุ โค้ดสีแดงคือข้อมูลส่วนตัวของแต่ละคนที่ใช้ต่างกัน
ขั้นที่ 2 วิเคราะห์ Macro ที่ได้เพื่อดูความเหมือนและความแตกต่าง
จากโค้ดในขั้นที่ 1 จะเห็นว่าWebpage ของ Pligg ที่เราทำการสมัครสามารถใช้ข้อมูลในการสมัครชุดเดียวกันได้
ข้อมูลที่ใช้กรอกเหมือนกัน
ได้แก่ username, email และ password
ส่วนข้อมูลที่ใช้ต่างกัน
ได้แก่ URL ของเว็บ Pligg และ รหัส Captcha ซึ่งรหัส Captcha นั้นได้มาจากการสุ่มจึงเป็นไปได้ยากที่จะเหมือนกัน
ขั้นที่ 3 ดัดแปลง Macro ให้สามารถใช้ได้กับทุก Webpage (ของ Pligg แห่งอื่น ๆ)
จากขั้นที่ 2 ผมจึงทำการกำหนด username, email และ password เป็นตัวแปรซึ่งมี 3 ค่าพอดี ส่วนการกรอก Captcha ผมจะใช้วิธีหยุดรอเพื่อให้ผู้สมัครกรอกเองแล้วสั่งให้ Macro ทำงานต่อ ซึ่งโค้ดที่ได้เป็นดังนี้
VERSION BUILD=6700624 RECORDER=FX TAB T=1 SET !VAR1 username SET !VAR2 email SET !VAR3 password URL GOTO=http://www.hotscripts.ro/ TAG POS=1 TYPE=A ATTR=TXT:Register TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:* ATTR=ID:reg_username CONTENT={{!VAR1}}TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:* ATTR=ID:reg_email CONTENT={{!VAR2}} SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:* ATTR=ID:reg_password CONTENT={{!VAR3}} SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:* ATTR=ID:reg_verify CONTENT={{!VAR3}} pause 'หยุดเพื่อกรอก Captcha และกด Continue TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:thisform ATTR=NAME:submit&&VALUE:Create<SP>user
โปรดสังเกตว่า
* Macro ด้านบนยังคงใช้ได้กับ hotscripts.ro เพียงแห่งเดียว
* ผมได้แทนที่ TAG ที่เป็นขั้นตอนการกรอก Captcha ด้วย คำสั่ง pause เพื่อให้เรากรอกด้วยตนเอง
* ผมใช้โค้ด FORM=ACTION: * แทน FORM=ACTION: /register เพื่อป้องกันความผิดพลาดในการกรอก Form
ขั้นที่ 4 สร้างไฟล์ CSV
สมมติว่า ผมต้องการใช้ Macro ที่สร้างนี้ใช้ได้กับรายชื่อเว็บ Pligg ด้านล่าง (คุณสามารถเพิ่ม URL ของ Pligg ได้ตามต้องการ)
http://www.hotscripts.roในขั้นนี้นี่เองที่เราจำเป็นต้องใช้ไฟล์ CSV เข้ามาช่วย ซึ่งทำโดย
http://bookmarknews.com
http://www.opineaboutme.com
http://www.hubstory.com
http://indelve.com
http://clipbookmarks.com
http://www.englishdigg.com
http://www.biqboq.com
http://www.trackerz.com
http://www.indexhit.com
http://www.socialmedia1.com
http://www.sgbuzz.com
4.1 สร้างไฟล์ CSV ตามที่ได้สอนไปแล้วข้างต้นโดยให้ และแถวแทน URL ของ Pligg แต่ละแห่งและตั้งชื่อไฟล์ว่าPliggreg.csv
4.2 คัดลอกไฟล์ Pliggreg.csv ไปวางไว้ใน Folder Datasources ใน C:\Documents and Settings\All Users\My Documents\iMacros
ขั้นที่ 5 เรียกใช้ ไฟล์ CSV เพื่อทำให้ Macro ใช้ได้กับ Pligg แห่งอื่น ๆ
เมื่อสร้าง Pliggreg.csv และวางใน Folder ที่ระบุแล้วต่อไปเราจะแก้ไข Macro อีกครั้งเพื่อให้ Macro ดึงข้อมูลจากPliggreg.csv มาทำซ้ำซึ่งทำได้โดยการเพิ่มชุดโค้ดต่อไปนี้เข้าไปในโค้ดของขั้นที่ 3
SET !DATASOURCE Pliggreg.csv SET !DATASOURCE_COLUMNS 1 SET !DATASOURCE_LINE {{!LOOP}} SET !LOOP 1และได้โค้ดที่แก้ไขแล้วเป็น
VERSION BUILD=6700624 RECORDER=FX TAB T=1 SET !DATASOURCE Pliggreg.csv SET !DATASOURCE_COLUMNS 1 SET !DATASOURCE_LINE {{!LOOP}} SET !LOOP 1 SET !VAR1 username SET !VAR2 email SET !VAR3 password URL GOTO={{!COL1}} TAG POS=1 TYPE=A ATTR=TXT:Register TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:* ATTR=ID:reg_username CONTENT={{!VAR1}} TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:* ATTR=ID:reg_email CONTENT={{!VAR2}} SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:* ATTR=ID:reg_password CONTENT={{!VAR3}} SET !ENCRYPTION NO TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:* ATTR=ID:reg_verify CONTENT={{!VAR3}} pause 'หยุดเพื่อกรอก Captcha และกด Continue TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:thisform ATTR=NAME:submit&&VALUE:Create<SP>user
ขั้นที่ 6 ตรวจสอบการทำงานของ Macro หรือปรับปรุงให้มีประสิทธิภาพสูงสุด
ในที่นี้ผมจะเพิ่มโค้ด
SET !ERRORIGNORE YESและ
SET !ERRORCONTINUE YES
ความคิดเห็นทั้งหมด