ในการใช้งาน google spreadsheet บางครั้งต้องการ update ข้อมูลจากหน้าเว็บอื่น โดยไม่ต้องคอยเปิด และคัดลอกข้อมูล เช่น ข้อมูลราคากองทุนจากเว็บกองทุน เพื่อนำมาใช้คำนวณ หรือ วิเคราะห์ ด้วยราคาล่าสุด สามารถทำได้ด้วย function importXML
ตัวอย่าง หากต้องการ นำค่า ดัชนี SET ล่าสุดมาใช้งานใน google spreadsheet สามารถทำได้โดย
1. เปิดโปรแกรม Google Chrome Browser
2. เข้า web url http://docs.google.com ทำการ signin ด้วย account gmail
3. เลือก create Spreadsheet จะได้ sheet ว่าง รอการใส่ข้อมูล
4. เปิด new Tab เพื่อเข้า web url http://www.set.or.th
5. ข้อมูล SET index ล่าสุด จะปรากฏอยู่ในช่อง "ศูนย์รวมข้อมูลการลงทุน"
6. นำ mouse ไปคลิกขวาที่ตัวเลข SET index ล่าสุด จะสังเกตพบเมนู "View frame source" แสดงว่าข้อมูลชิ้นนี้ อยู่ในอีก url หนึ่ง ซึ่งนำมาแสดงปนกับ url http://www.set.or.th (หากไม่เห็น "View frame source" ก็แสดงว่า ชิ้นข้อมูลนี้อยู่ใน url ที่เปิดไว้)
7. ทำการเลือก "View frame source" สังเกตที่ ช่องใส่ web url จะเป็น view-source:http://marketdata.set.or.th/static/market/set/indextab_th_TH.html ให้ copy เฉพาะ http://marketdata.set.or.th/static/market/set/indextab_th_TH.html ไป new Tab เพื่อเข้า หน้า web ที่จะมีข้อมูล SET Index ล่าสุดอยู่
8. นำ mouse ไปคลิกขวาที่ตัวเลข SET index ล่าสุด (คราวนี้จะไม่พบเมนู "View frame source" แล้ว)
9. ให้เลือกเมนู "Inspect element" จะปรากฏ หน้าต่างแสดง source html ของหน้า web ที่เลือก พร้อม แถบเลือกบรรทัดที่แสดงข้อมูล SET Index ล่าสุด
10. นำ mouse ไป คลิกขวาที่ข้อมูลรรทัดที่เลือกไว้ เลือกเมนู "Copy XPath"
11. เปิดโปรแกรม notepad ทำการ Paste สิ่งที่ copy ไว้ => /html/body/table/tbody/tr[6]/td[2]/table[1]/tbody/tr[3]/td[3]/div/font
12. ทำการตรวจสอบแก้ไข ข้อความที่ copy มาดังนี้
* หากมี สัญลักษณ์ " อยู่ ให้เปลี่ยนเป็น '
* หากมี /tbody/ อยู่ ให้เปลี่ยนเป็น //
จะได้เป็น /html/body/table//tr[6]/td[2]/table[1]//tr[3]/td[3]/div/font
13. นำไปประกอบกับคำสั่ง importXML(url,query) โดย
url = หน้า web url ที่เปิดดูข้อมูล => "http://marketdata.set.or.th/static/market/set/indextab_th_TH.html"
query = XPath ที่ได้มา => "/html/body/table//tr[6]/td[2]/table[1]//tr[3]/td[3]/div/font"
พอนำมาประกอบกันจะได้เป็น => importXML("http://marketdata.set.or.th/static/market/set/indextab_th_TH.html", "/html/body/table//tr[6]/td[2]/table[1]//tr[3]/td[3]/div/font")
14. นำคำสั่งที่ได้ไปใส่ใน google spreadsheet cell A1 โดยใส่เครื่องหมาย = นำหน้าคำสั่ง importXML จะได้ค่า SET Index ล่าสุดไปปรากฏใน cell A1 โดยค่านี้จะ update ทุกครั้งที่เปิดเอกสาร
คำอธิบายเพิ่มเติม
หน้าเว็บต่างๆที่แสดงใน browser จะถูกจัดเก็บในลักษณะของ tag(มีป้ายกำกับข้อมูล) ซึ่งข้อมูลที่แสดงใน browser ก็จะเป็นข้อมูลของ tag โดยที่ tag จะถูกจัดเก็บอย่างมีโครงสร้างที่เหมือนต้นไม้ ซึ่งจะมีความสัมพันธ์ระหว่าง tag แบบ แม่-ลูก (parent-child) หรือ พี่-น้อง (sibling) และใน tag ชื่อเดียวกัน สามารถกำหนดคุณสมบัติ (attribute) ที่แตกต่างกันได้
ด้วยลักษณะ ข้อมูลดังกล่าว เราสามารถใช้ XPath (ภาษาที่ใช้ในการอ้างถึงข้อมูล ที่จัดเก็บในรูปแบบของ xml document) มาใช้เข้าถึงชิ้นข้อมูล หรือชุดข้อมูล ในหน้าเว็บที่ต้องการได้
รูปแบบการอ้างถึง tag (หรือ node) ที่เก็บข้อมูลที่ต้องการ
/ + tagname | อ้างถึง ชื่อ tag ที่อยู่ติดกับตำแหน่งที่เริ่มค้นหา (tagname ที่มีความสัมพันธ์เป็น ลูก (child) เท่านั้น) |
// + tagname | อ้างถึง ชื่อ tag ซึ่งปรากฏอยู่ที่ใดก็ได้ นับจากตำแหน่งที่ค้นหา (ไล่ตามความสัมพันธ์ แม่-ลูก-หลาน-...) |
@ | อ้างถึง attribute ของ tag |
[] | ใช้ระบุเงื่อนไขเฉพาะของ tag ที่ต้องการเลือก |
* | อ้างถึง tagname ใดๆ |
@* | อ้างถึง attribute ใดๆ ของ tagname |
| | ใช้เชื่อมการอ้างถึง tagname มากกว่า 1 แบบ โดยจะได้ผลลัพธ์ของทุกๆ รูปแบบรวมกัน |
/tagname[1] | เลือก tagname ตัวที่ 1 (ตัวแรก กรณีที่มี tagname เดียวกันหลายตัว) |
/tagname[last()] | เลือก tagname ตัวสุดท้าย |
/tagname[last()-1] | เลือก tagname ตัวก่อนตัวสุดท้าย |
/tagname[position()<3] | เลือก tagname 2 ตัวแรก |
/tagname[@tagattr>100.00] | เลือก tagname ที่มี attribute ชื่อ "tagattr" ที่มีค่า มากกว่า 100.00 |
/tagname[@tagattr>100.00]/tagtitle | เลือก tag ที่ชื่อ tagtitle ซึ่งอยู่ใต้ (เป็นลูก) tagname ที่มี attribute ชื่อ "tagattr" ที่มีค่า มากกว่า 100.00 |
//tagname[@tagattr] | เลือก tagname ที่มี attribute ชื่อ "tagattr" (เลือกทุกตัว นับจากตำแหน่งที่ค้นหา ไล่ความสัมพันธ์ แม่-ลูก-หลาน-...) |
//tagname[@tagattr='abc'] | เลือก tagname ทุกตัว ที่มี attribute ชื่อ "tagattr" ที่มีค่าเท่ากับ "abc" (เลือกทุกตัว นับจากตำแหน่งที่ค้นหา ไล่ความสัมพันธ์ แม่-ลูก-หลาน-...) |
อ้างอิง: w3schools.com : XPath Syntax