SharePoint.Tables เป็นฟังก์ชันสำหรับดึงข้อมูลทั้งหมดจาก SharePoint List มา Power Query โดยคืนค่าตารางที่มีแถวสำหรับแต่ละรายการใน List พร้อมกับจัดการการเชื่อมต่อและการรับรองตัวตนอัตโนมัติ
= SharePoint.Tables(url as text, optional options as nullable record) as table
= 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) |
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/employees", Data = SharePoint.Tables(SharePointUrl) in Datalet
SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/employees",
Data = SharePoint.Tables(SharePointUrl)
in
Data
ตารางที่มีแถวสำหรับแต่ละรายการพนักงาน พร้อมคอลัมน์ทั้งหมดของ List
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/projects", Options = [ApiVersion = "Auto", Implementation = "2.0"], Data = SharePoint.Tab…let
SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/projects",
Options = [ApiVersion = "Auto", Implementation = "2.0"],
Data = SharePoint.Tables(SharePointUrl, Options)
in
Data
ตารางข้อมูลโปรเจกต์ โดยใช้ SharePoint API version ที่เหมาะสม (Auto-detect) และ Implementation 2.0 ซึ่งเร็วกว่า
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/tasks", Options = [ApiVersion = "Auto", Implementation = "2.0", ViewMode = "Default"], Da…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
ตารางงาน (Tasks) ที่มีสถานะ "Active" โดยดึงเฉพาะคอลัมน์ที่แสดงใน default view ของ List
let SharePointUrl = "https://contoso.sharepoint.com/sites/mysite/lists/documents", Options = [ApiVersion = "Auto", Implementation = "2.0", DisableAppendNoteColu…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
ตารางข้อมูลเอกสารโดยไม่รวมการโหลด note columns จากใน endpoint แยก
ง่ายเลย – Tables ดึงข้อมูลจาก List (แถว-คอลัมน์แบบตาราง) ส่วน Contents ดึงไฟล์และโฟลเดอร์จากภายใน SharePoint Site แบบ folder structure
จะช้าได้แน่นอน เพราะ Power Query ดึงทั้งหมด แนะนำสองแบบ: (1) Filter ด้านใน SharePoint List เอง ให้มันส่งมาแค่ที่ต้องการ หรือ (2) ใช้ ViewMode = “Default” และ DisableAppendNoteColumns = true เพื่อลดข้อมูลลง
99% ของเวลา ใช้ “Auto” ได้เลย มันจะแสกนเองว่า SharePoint นั้นเป็น version ไหน แต่ถ้าเจอ weird error หรือ SharePoint เป็นบนเซิฟเวอร์ legacy ลองผ่อน 15 ดู
เมื่อมี note column ในตัว List แต่ไม่ต้องการ data จากคอลัมน์นั้น เลย true มันเลยไปได้นัก เพราะมันทำให้ Power Query ไม่ต้องเรียก endpoint พิเศษอีกอันสำหรับหมายเหตุ ประหยัด request และเร็วขึ้น
2.0 จริงๆ เร็วกว่า และเสถียรมากขึ้น อย่างมี refresh job ที่ทำเป็นประจำ ต่อให้ SharePoint ปรับปรุง ก็ไม่พังเหมือน legacy ที่บางทีเจอ compatibility issue ใช้ 2.0 เลยอย่าลังเล
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 ได้มากเลย 😎