IMPORTRANGE ดึงข้อมูลข้าม Spreadsheet ใน Google Sheets ในการที่เราจะนำข้อมูลจากไฟล์การตอบกลับหรือไฟล์ต้นฉบับที่ไม่ต้องการให้คนอื่นมองเห็นไฟล์ที่สำรวจมาทั้งหมดหรือมายุ่งวุ่นวายกับไฟล์ต้นฉบับบของเรา ใน sheet ของ Google Sheets ทำได้โดยใช้คำสั่ง =IMPORTRANGE() ซึ่งคำสั่งนี้จะช่วยทำสำเนา นำข้อมูลทั้งหมดของอีก sheet มาใช้ใน Spreadsheet ที่เราต้องการทั้งหมด แต่เมื่อเราจะแก้ไขข้อมูลให้ไปแก้ไขใน sheet
ต้นฉบับของเรา การใช้คำสั่งนี้จะต้องมีไฟล์ Spreadsheet 2 ไฟล์ เพื่อทำการสำเนาข้อมูลจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง ซึ่งตามภาพจะสำเนาไฟล์จากไฟล์ต้นฉบับไปยังไฟล์สรุปข้อมูล
เปิดที่ไฟล์ สรุปข้อมูล แล้วเลิกที่ช่อง A1 หรือช่องที่ต้องการเริ่มต้น โดยพิมพ์คำสั่ง =IMPORTRANGE ลงไป แล้ว Google Sheets จะทำการแนะนำการใช้งานคำสั่งแบบอัตโนมัติมาให้ดู ทำให้ง่ายและสะดวกต่อการใช้งานมากขึ้น
เมื่อพิมพ์ชุดคำสั่งทั้งหมดแล้ว ดังตัวอย่างข้างล่าง
=IMPORTRANGE(spreadsheet_url หรือ รหัสของ Sheet, สตริงช่วง)
=IMPORTRANGE("1m3J5cLZsGfs2AI1Y90_AFaYA15DtnlQtzULw1TH0s0E","data!A:E")
ให้ไปนำรหัสของไฟล์งานต้นฉบับที่จะดึงข้อมูลมาใช้งาน โดยไปคัดลอกรหัสที่ URL ของเว็บไซต์
นำมาใส่ใน หมายเลข 1
หมายเลข 2 คือ ชื่อของ Spreadsheet ที่ตั้งค่าไว้
หมายเลข 3 คือ ช่วงของข้อมูลตาม Column ที่เราต้องการ
เมื่อพิมพ์คำสั่งทั้งหมดแล้ว Google Sheets จะให้เราเปิดการอนุญาตการเข้าถึงข้อมูล เพื่อที่จะนำข้อมูลที่ต้องการมาแสดงผลได้
หลังจากที่ได้รับการอนุญาตให้เข้าถึงข้อมูลแล้ว ข้อมูลที่เลือกไว้ก็จะแสดงผลตามที่เราต้องการ
Google Sheets Importrange Spreadsheet ดึงข้อมูล
ในบทความนี้จะแนะนำการเรียกข้อมูลจาก Google Sheet มาแสดงบนเว็บของเราอย่างง่ายๆ ด้วยภาษา PHP. 1. สร้างข้อมูลตัวอย่างใน Google Sheet ก่อนครับ. 2. เรามาลองดึงข้อมูลผ่าน API ด้วยภาษา PHP กันครับ.
ขั้นตอนที่ 1.ขั้นตอนที่ 2.
ขั้นตอนที่ 3.ขั้นตอนที่ 4.
ขั้นตอนที่ 5.
ภาพผลลัพธ์
Posted 28 September 2019. 2 min read.
หาก Google Sheets ของคุณมีข้อมูลแยกกันอยู่หลายไฟล์ เราสามารถเรียกข้อมูลจาก Spreadsheet ไฟล์นึงไปยังอีกไฟล์นึงได้ด้วย =IMPORTRANGE()
=IMPORTRANGE()
คือคำสั่งเดียวที่จะทำให้คุณสามารถเรียกเอาไฟล์จาก Google Sheets ของใครก็ได้(ถ้าเขาอนุญาต) มาใช้งานบน Spreadsheet ของคุณ โดยหน้าตาของคำสั่งเต็มๆก็จะเป็นอย่างนี้ครับ
จบแล้วครับ
ตัวอย่าง(กลัวไม่เห็นภาพ)
สมมติว่าผมมี Spreadsheet ชื่อ "ลูกค้า" เอาไว้เก็บลูกค้าแยกแบบนี้นะครับ
แล้วผมก็มีอีก Spreadsheet นึงชื่อ "รายการขาย" เป็นคนละไฟล์กัน แต่ผมอยากเอารายชื่อลูกค้ามาแปะไว้ที่นี่ด้วย แต่ผมไม่อยาก copy & paste รายชื่อลูกค้าใหม่ทุกครั้งที่มีการแก้ไข ผมจึงเลือกใช้ =IMPORTRANGE() เพื่อความสะดวก ใช้แค่คำสั่งเดียวจะแก้กี่ครั้งข้อมูลก็ update ตามเอง ว่าแล้วผมก็พิมพ์สูตร
=IMPORTRANGE( "//docs.google.com/spreadsheets/d/1A0J9ofsjn2ThsAENGH4HgR_CB_xTBkSradYhlUOTEp4", "Sheet1!A1:B" )- URL ที่ผมใส่ลงไปนั้นก็คือ URL ของ Spreadsheet ที่ชื่อว่า "ลูกค้า" นั่นเองครับ
- ส่วน Sheet1!A1:B ก็คือ range ที่ผมต้องการเอามาแสดงครับ Sheet1 เอา column A ถึง B มาทุก row เลย
Google Sheets จะมีหน้าต่างเล็กๆมาบอกเราว่าต้องอนุญาตการเข้าถึงก่อนนะ ก็ไม่มีอะไรครับถ้าเราสร้างเองทั้งหมดอยู่แล้วก็ Allow access ไปเลย ถ้าเป็นของคนอื่นก็ต้องรอเจ้าของเขาอนุญาตก่อน พอเรียบร้อยแล้วก็จะได้ข้อมูลมาปรากฏตรงหน้าแบบนี้เลยครับ ง่ายๆแค่นี้แหละ (ที่เห็นมาแค่ 2 column ไม่ได้ผิดนะครับ อย่าลืมนะว่าผมขอมาแค่ A กับ B)
ไหนลองกลับมาสร้าง Named range ที่ spreadsheet "ลูกค้า" ดูบ้างซิ ไม่อยากพิมพ์ Sheet1!A1:D มันยาว ก็ไปที่เมนู Data > Named ranges
ตั้งชื่อเป็น Customer แทนแล้วกันนะครับ
กลับมาที่ spreadsheet "รายการขาย" บ้าง คราวนี้ผมจะเปลี่ยน range ท้ายสูตรจาก Sheet1!A1:B เป็น Customer แทนบ้าง ผลที่ออกมาก็ตรงตามคาดครับ มาครบตั้งแต่ column A ถึง D เลย แปลว่าเราสามารถใช้ Named range กับสูตรนี้ได้ด้วยนะ
แล้วถ้าเกิดเอามาใช้กับ =QUERY() จะเป็นยังไง ผมก็สร้าง sheet ใหม่แล้วพิมพ์สูตรลงไปเลย
สังเกตนะครับว่า เงื่อนไขใน =QUERY() ของผมวันนี้ดูแปลกไป ไม่เหมือนเมื่อก่อนเวลาเราเรียก column เราจะใช้ตัวอักษร A, B, C, ... ใช่ไหมครับ แต่เมื่อไหร่ก็ตามที่เราเรียกข้อมูลมาตาม =IMPORTRANGE() เราต้องเปลี่ยนเป็น Col1, Col2, Col3, ... แทนนะครับ ในคำสั่งนี้ผมบอกว่า "จงดึงเอาข้อมูลทุก column มาถ้า Col1 มีค่าเท่ากับ C0001" ถ้าย้อนกลับไปดู A หรือ Col1 นั่นก็คือ "หมายเลข" ของรายชื่อลูกค้านั่นเองครับ
ถึงผลลัพธ์จะสวยงามแต่สูตรมันช่างยืดยาวน่าเกลียดน่ากลัวเหลือเกิน เพราะ URL กินที่ไปหมด เพื่อความสวยงามเราสามารถสร้าง sheet ใหม่ขึ้นมาเก็บ URL ของแต่ละ spreadsheet ที่เราจะดึงข้อมูลมาก็ได้นะครับ
เพื่อให้สั้นลงไปอีกผมก็สร้าง Named range ของ URL ด้วยเลย ในภาพจะเห็นว่าผมสร้าง CustomerUrl กับ PartnerUrl
ลองกลับมาแก้สูตรที่ยาวน่าเกลียดน่ากลัวให้สั้นลงด้วย Named range ดูสิครับ ดูสะอาดตาคือเยอะเลย
ของเก่า
=QUERY( IMPORTRANGE("//docs.google.com/spreadsheets/d/1A0J9ofsjn2ThsAENGH4HgR_CB_xTBkSradYhlUOTEp4","Customer"), "where Col1 = 'C001'" )แก้ใหม่ให้สั้นลง
=QUERY( IMPORTRANGE(CustomerUrl,"Customer"), "where Col1 = 'C001'" )นอกจาก =QUERY() แล้วเรายังสามารถใช้ได้กับทุกสูตรที่ต้องการรับ range นะครับ เช่น =VLOOKUP(), =HLOOKUP(), =FILTER(), =MATCH() และอีกหลายๆตัวเลย ต่อไปนี้เราไม่จำเป็นต้องรวมทุกอย่างใน Spreadsheet เดียวให้รู้สึกเทอะทะแล้วนะครับ การแยกข้อมูลเป็นหลายๆส่วนอาจจะช่วยให้การจัดการง่ายขึ้นได้นะครับ ลองนึกภาพ Spreadsheet ที่มีอยู่ 50-60 sheets คงต้องเลื่อนหากันตาลายแน่นอนครับ
My thoughts about People, Programming, Gadget, Photography and Everything that can be conceptualized