Thep Excel

SharePoint.Tables – ดึงข้อมูลจาก SharePoint Lists

SharePoint.Tables เป็นฟังก์ชันสำหรับดึงข้อมูลทั้งหมดจาก SharePoint List มา Power Query โดยคืนค่าตารางที่มีแถวสำหรับแต่ละรายการใน List พร้อมกับจัดการการเชื่อมต่อและการรับรองตัวตนอัตโนมัติ

= SharePoint.Tables(url as text, optional options as nullable record) as table

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
6/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

= SharePoint.Tables(url as text, optional options as nullable record) as table

Argument Type Required Default Description
url Text Yes URL ของ SharePoint List ที่ต้องการดึงข้อมูล เช่น https://contoso.sharepoint.com/sites/mysite/lists/employees หรือแม้กระทั่ง URL ของ List view
options Record Optional null ระเบียนตัวเลือกเพิ่มเติมเพื่อปรับแต่งการดึงข้อมูล ตัวเลือกที่สำคัญ ได้แก่ ApiVersion (14, 15 หรือ “Auto”), Implementation (“2.0” หรือ null), ViewMode (“All” หรือ “Default”), DisableAppendNoteColumns (true/false)

Examples

ดึงข้อมูลจาก SharePoint List พื้นฐาน
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/employees", Data = SharePoint.Tables(SharePointUrl) in Data
เชื่อมต่อกับ SharePoint List ที่ https://contoso.sharepoint.com/sites/mysite/lists/employees และดึงข้อมูลทั้งหมดเป็นตาราง โดยใช้ค่า default ของ options
Power Query Formula:

let
    SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/employees",
    Data = SharePoint.Tables(SharePointUrl)
in
    Data

Result:

ตารางที่มีแถวสำหรับแต่ละรายการพนักงาน พร้อมคอลัมน์ทั้งหมดของ List

ใช้ตัวเลือก ApiVersion และ Implementation 2.0
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/projects", Options = [ApiVersion = "Auto", Implementation = "2.0"], Data = SharePoint.Tab…
ระบุ ApiVersion = "Auto" เพื่อให้ Power Query แสกนและเลือก API version ที่ SharePoint server รองรับ และใช้ Implementation "2.0" เพื่อประสิทธิภาพและเสถียรภาพที่ดีขึ้น
Power Query Formula:

let
    SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/projects",
    Options = [ApiVersion = "Auto", Implementation = "2.0"],
    Data = SharePoint.Tables(SharePointUrl, Options)
in
    Data

Result:

ตารางข้อมูลโปรเจกต์ โดยใช้ SharePoint API version ที่เหมาะสม (Auto-detect) และ Implementation 2.0 ซึ่งเร็วกว่า

ใช้ ViewMode เพื่อดึงเฉพาะคอลัมน์จาก Default View
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/tasks", Options = [ApiVersion = "Auto", Implementation = "2.0", ViewMode = "Default"], Da…
ใช้ ViewMode = "Default" เพื่อดึงเฉพาะคอลัมน์ที่ผู้ใช้กำหนดไว้ในการมองหลัก (default view) แล้ว filter เพื่อดึงเฉพาะรายการที่สถานะเป็น Active ซึ่งช่วยลดขนาดของข้อมูล
Power Query Formula:

let
    SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/tasks",
    Options = [ApiVersion = "Auto", Implementation = "2.0", ViewMode = "Default"],
    Data = SharePoint.Tables(SharePointUrl, Options),
    Filtered = Table.SelectRows(Data, each [Status] = "Active")
in
    Filtered

Result:

ตารางงาน (Tasks) ที่มีสถานะ "Active" โดยดึงเฉพาะคอลัมน์ที่แสดงใน default view ของ List

ปิดการโหลด Note Columns เพื่อลดเวลา
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/documents", Options = [ApiVersion = "Auto", Implementation = "2.0", DisableAppendNoteColu…
ใช้ DisableAppendNoteColumns = true เมื่อ List มี note column (คอลัมน์ข้อหมายเหตุ) แต่ไม่ต้องการรวมข้อมูลจากคอลัมน์เหล่านั้น ซึ่งลดจำนวน HTTP request และเร่งความเร็ว
Power Query Formula:

let
    SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/documents",
    Options = [ApiVersion = "Auto", Implementation = "2.0", DisableAppendNoteColumns = true],
    Data = SharePoint.Tables(SharePointUrl, Options)
in
    Data

Result:

ตารางข้อมูลเอกสารโดยไม่รวมการโหลด note columns จากใน endpoint แยก

FAQs

SharePoint.Tables กับ SharePoint.Contents ต่างกันไง?

ง่ายเลย – Tables ดึงข้อมูลจาก List (แถว-คอลัมน์แบบตาราง) ส่วน Contents ดึงไฟล์และโฟลเดอร์จากภายใน SharePoint Site แบบ folder structure

List ถ้ามีข้อมูลเยอะมากจริงๆ (100K+ rows) จะมีปัญหาเหรอ?

จะช้าได้แน่นอน เพราะ Power Query ดึงทั้งหมด แนะนำสองแบบ: (1) Filter ด้านใน SharePoint List เอง ให้มันส่งมาแค่ที่ต้องการ หรือ (2) ใช้ ViewMode = “Default” และ DisableAppendNoteColumns = true เพื่อลดข้อมูลลง

ApiVersion ต้องเลือก 14, 15 หรือ Auto?

99% ของเวลา ใช้ “Auto” ได้เลย มันจะแสกนเองว่า SharePoint นั้นเป็น version ไหน แต่ถ้าเจอ weird error หรือ SharePoint เป็นบนเซิฟเวอร์ legacy ลองผ่อน 15 ดู

ต้องเปิด DisableAppendNoteColumns ตอนไหน?

เมื่อมี note column ในตัว List แต่ไม่ต้องการ data จากคอลัมน์นั้น เลย true มันเลยไปได้นัก เพราะมันทำให้ Power Query ไม่ต้องเรียก endpoint พิเศษอีกอันสำหรับหมายเหตุ ประหยัด request และเร็วขึ้น

Implementation "2.0" ดีกว่า null หรือ legacy ตรงไหน?

2.0 จริงๆ เร็วกว่า และเสถียรมากขึ้น อย่างมี refresh job ที่ทำเป็นประจำ ต่อให้ SharePoint ปรับปรุง ก็ไม่พังเหมือน legacy ที่บางทีเจอ compatibility issue ใช้ 2.0 เลยอย่าลังเล

Resources & Related

Additional Notes

SharePoint.Tables คือ connector ตรงตัวสำหรับดึงข้อมูล SharePoint List มาเป็นตารางใน Power Query โดยจัดการการเชื่อมต่อและการ authenticate ให้อัตโนมัติ ไม่ต้องเขียน HTTP request เองตั้งแต่ต้นหัว

ที่เจ๋งคือ flexibility มันจริงๆ ถ้า List มีข้อมูลมากมายหรือมี note columns ที่ค่อนข้างหนัก ผมสามารถปรับแต่งได้หมดเลย ไป่ว่าจะ auto-detect API version, เลือกเฉพาะคอลัมน์จาก default view, หรือปิด note columns เพื่อเร่งความเร็ว

ส่วนตัวผม ผมชอบใช้ Implementation 2.0 กับ DisableAppendNoteColumns = true เป็น default เพราะ 99% ของ projects ไม่จำเป็นต้อง load note columns ที่เท่าไรแล้ว ประหยัดเวลา refresh ได้มากเลย 😎

Leave a Reply

Your email address will not be published. Required fields are marked *