Skip to main content

ติดตามพัสดุ Kerry Express ทีละหลายๆชิ้นด้วย Google Sheets ในไม่กี่นาที

·1 min

สำหรับผู้ค้าออนไลน์การรายงานหรือติดตามสถานะของสินค้าที่ถูกจัดส่งไปให้ลูกค้านั้นมีความสำคัญมาก เพราะถ้าคุณรู้ข้อมูลเร็วคุณก็จะสามารถแก้ปัญหาให้ลูกค้าได้ทันเวลา แต่ว่าเครื่องมือที่ Kerry Express ทำมาให้กลับทำให้เราตรวจสอบได้แค่ทีละชิ้นนี่สิ เรามาแก้ปัญหานี้กันครับ

วิธีปกติ #

การติดตามพัสดุของ Kerry ตามปกติเราก็จะเข้าไปที่เว็บไซต์ของบริษัทแล้วก็กรอกหมายเลขพัสดุลงไปสุดท้ายเราก็จะเห็นหน้าตาเว็บแบบนี้

หน้าติดตามพัสดุ

สิ่งที่เราต้องการจะเห็นในหน้านี้ก็คือสถานะพัสดุว่าส่งไปถึงไหนแล้วบ้างในฝั่งขวามือ ผมอยากได้ข้อมูลพวกนั้นไปแสดงใน Google Sheets ของผม ผมเลยเข้าไปสังเกตอะไรนิดหน่อยเพื่อหาตำแหน่งของข้อมูลสถานะในหน้าเว็บครับ

หาตำแหน่งของสถานะในหน้าเว็บ

ส่วนนี้ใครเป็นโปรแกรมเมอร์หรือเคยเรียนมาน่าจะรู้ว่าไอ้เจ้า HTML เนี่ยเราสามารถใช้การ query หา node ได้ด้วย XPath ใช่ไหมครับ แล้วพอดีเลยว่า Google Sheets นั่นมีคำสั่ง =IMPORTXML(url, query) แบบนี้ก็สบายสิ คลิกขวาที่ node แล้วไปที่ Copy > Copy XPath เราก็จะได้ข้อมูลตัวนี้ครับ

Copy XPath
//*[@id="trackArea"]/div/div/div/div/div/div[2]/div[1]/div[2]/div[1]/text()[1]

เป็นอันเรียบร้อยครับ เก็บ XPath ตัวนี้ไว้แล้วเดี๋ยวเราไปสร้าง Sheet กัน สำหรับใครไม่เข้าใจไม่เป็นไรครับ copy เจ้า code ยาวๆด้านบนไว้ได้เลย

คำเตือน #

บทความนี้เขียนเมื่อวันที่ 25 สิงหาคม 2562 นะครับ หน้าเว็บ Kerry อาจจะมีการเปลี่ยนแปลงซึ่งจะส่งผลโดยตรงกับสูตรนี้ในอนาคต หากใช้ไม่ได้เราต้องมา update XPath กันใหม่นะครับ

สร้าง Sheet #

เปิด Google Sheets ขึ้นมาสร้าง Sheet หน้าตาแบบนี้นะครับ จะมี column ดังนี้ครับ

  • หมายเลขพัสดุ ตรงนี้กรอกค่าลงไปรอได้เลยแบบในรูปนะครับ
  • ลิงค์
  • สถานะล่าสุด
ตัวอย่าง sheet ใหม่

สร้างลิงค์ #

การติดตามพัสดุวิธีนี้ก็คือการที่เราสั่งให้ Google Sheets มันเข้าเว็บแทนเราครับ ดังนั้นจะให้มันเข้าเว็บไหนเราก็ต้องเตรียม url เอาไว้ให้มันด้วย และเป้าหมายปลายทางที่เราอยากจะให้มันเข้าไปก็คือ

https://th.kerryexpress.com/th/track/?track=หมายเลขพัสดุ

ถ้าใครสังเกตนะครับ ทุกครั้งที่เราเข้าติดตามสถานะในเว็บไซต์เราจะได้ url หน้าตาแบบนี้ตลอด (ยกเว้น kerry จะมีการเปลี่ยนในอนาคตนะ) ตอนนี้หมายเลขพัสดุเราก็มีอยู่แล้ว เราก็แค่เอามันมาต่อท้ายสินะ ก็จัดไปด้วยสูตรนี้ครับ

=ARRAYFORMULA(
    IF(
        A2:A<>"",
        "https://th.kerryexpress.com/th/track/?track="&A2:A,
        ""
    )
)

หรือใครจะใช้สูตรนี้ในช่องแรกแล้วลากลงไปเองก็ได้นะครับ

="https://th.kerryexpress.com/th/track/?track="&A2

เราก็จะได้ลิงค์มาอย่างนี้

ได้ลิงค์ครบแล้ว

ดึงสถานะล่าสุดมาแสดง #

เมื่อทุกอย่างพร้อมแล้วเราก็จะใช้คำสั่ง =IMPORTXML() นะครับ เพื่อดึงข้อมูลจากหน้าเว็บมาที่ Google Sheets โดยสูตรก็จะหน้าตาอย่างนี้

=IMPORTXML(B2,"//*[@id='trackArea']/div/div/div/div/div/div[2]/div[1]/div[2]/div[1]/text()[1]")

ใครงงว่ายึกยือๆข้างหลังนี่คืออะไร จำที่ผมบอกให้ copy ไว้ด้านบนได้ไหมครับ มันคือ XPath ที่เราใช้ชี้ไปหาข้อมูลสถานะล่าสุดนั่นเอง

ดึงข้อมูลมาจากลิงค์แรก

เนื่องจากคำสั่งนี้ใช้กับ =ARRAYFORMULA() ไม่ได้ เราจึงจำเป็นต้องลากสูตรลงไปด้านล่างเอง และผลลัพธ์ก็จะออกมาสวยงามแบบนี้ครับ พอดีหมายเลขที่ผมเอามาใช้มันเป็นข้อมูลเก่าทุกชิ้นเลยไปถึงปลายทางหมดแล้ว

ดึงข้อมูลมาจากลิงค์ทั้งหมด

เพียงเท่านี้คุณก็สามารถติดตามพัสดุของลูกค้าได้อย่างง่ายๆ ไม่ต้องเสียเวลาเปิดทีละหน้าแล้ว วิธีนี้สามารถประยุกต์ได้กับบริษัทอื่นที่อาจจะมีลักษณะเว็บคล้ายๆกันนะครับ