ข้ามไปยังเนื้อหา

ไวยากรณ์เทมเพลต

ตัวแปรคือตัวแทนค่าในเทมเพลตของคุณ ซึ่งจะถูกแทนที่ด้วยข้อมูลจากแต่ละระเบียน: แถวในตาราง Excel รายการในลิสต์ SharePoint แถวใน Dataverse แถวในชีต Google Sheets ระเบียนใน Lark Base หรือ JSON ที่คุณส่งผ่าน API เอกสาร ไวยากรณ์เหมือนกันไม่ว่าข้อมูลจะมาจากแหล่งใด

ใช้วงเล็บปีกกาคร่อมชื่อฟิลด์ที่ถูกต้อง:

{Field_Name}

ตัวอย่าง:

  • {Customer_Name} → “Acme Corp”
  • {Invoice_Date} → “2024-01-15”
  • {Total_Amount} → “1,500.00”

หากไม่มีฟิลเตอร์ ตัวแทนค่าจะแสดงค่าตามที่แหล่งข้อมูลแสดง ส่วนฟิลเตอร์ตัวเลขและวันที่จะทำงานกับค่าดิบที่อยู่เบื้องหลังแทน ดูฟิลเตอร์อ่านค่าดิบ

ค่า Excel ลิสต์ SharePoint Dataverse Google Sheets Lark Base API เอกสาร
ตัวเลข ตามที่เซลล์แสดง 1,234.5 ตามจำนวนทศนิยมของคอลัมน์ ข้อความที่ Dataverse จัดรูปแบบแล้ว ตามที่เซลล์แสดง รูปแบบตัวเลขของฟิลด์ ตามที่ส่งมา: 1234.5
สกุลเงิน ตามที่เซลล์แสดง โดยปกติในสกุลเงินของคอลัมน์: $1,234.50 ข้อความที่ Dataverse จัดรูปแบบแล้ว พร้อมสัญลักษณ์สกุลเงิน ตามที่เซลล์แสดง ในสกุลเงินของฟิลด์: $1,234.50 ตามที่ส่งมา
เปอร์เซ็นต์ ตามที่เซลล์แสดง: 12% 12% เป็นตัวเลข ตามที่เซลล์แสดง: 12% ฟิลด์ความคืบหน้า โดยปกติ: 12% ตามที่ส่งมา
วันที่ เวลา ตามที่เซลล์แสดง 2026/02/26 หรือ 2026/02/26 15:30 เมื่อมีเวลา 2026/02/26 หรือ 2026/02/26 15:30 เมื่อมีเวลา ตามที่เซลล์แสดง รูปแบบวันที่ของฟิลด์ ค่าเริ่มต้นคือ 2026/02/26 ตามที่ส่งมา
บุคคล ข้อความ ชื่อ Lookup ที่แสดงชื่อ ชิปบุคคล: ชื่อ ชื่อ ตามที่ส่งมา
ลิงก์ =HYPERLINK(…): ที่อยู่ ที่อยู่ ที่อยู่ เซลล์ที่เป็นลิงก์เดียว: ที่อยู่ ที่อยู่ ตามที่ส่งมา
ตัวเลือก ข้อความ ป้ายกำกับ หลายค่าคั่นด้วยจุลภาค ป้ายกำกับ หลายค่าคั่นด้วยจุลภาค ตัวเลือก หลายค่าตามที่เซลล์แสดง ตัวเลือก หลายค่าคั่นด้วยจุลภาค ตามที่ส่งมา รายการจะคั่นด้วยจุลภาค
ใช่/ไม่ใช่ true / false true / false ป้ายกำกับของคอลัมน์เอง เช่น Yes / No ช่องทำเครื่องหมาย: true / false ช่องทำเครื่องหมาย: true / false true / false
รูปภาพ ไฟล์ คอลัมน์รูปภาพ คอลัมน์ Picture และ Image และ {Attachments} ของรายการ คอลัมน์รูปภาพและไฟล์ บันทึกย่อ ชิปไฟล์ ลิงก์ไปยังไฟล์ใน Drive และ =IMAGE(…) ฟิลด์ไฟล์แนบ URL ของรูปภาพ
แถวที่เชื่อมโยง ตารางที่เกี่ยวข้อง คอลัมน์ Lookup Lookup และความสัมพันธ์ แท็บที่เกี่ยวข้อง ฟิลด์ลิงก์และ Lookup ออบเจกต์และรายการ
  • วันที่จาก SharePoint, Dataverse และ Lark Base แสดงตามเขตเวลาของเทมเพลต (เทมเพลต → ผลลัพธ์ → เขตเวลา หรือ UTC หากไม่ได้ตั้งไว้)
  • เซลล์หรือฟิลด์ที่ว่างจะไม่แสดงอะไร และนับว่าว่างใน {#if}
  • รูปภาพและไฟล์ไม่แสดงเป็นข้อความ ให้วางผ่าน Alt Text ของรูป (ดูรูปภาพแบบไดนามิก) หรือเพิ่มลงใน PDF ด้วย {ATTACH:…}
  • เข้าถึงแถวที่เชื่อมโยงด้วยเครื่องหมายจุดหรือลูป ดูระเบียนที่เชื่อมโยง
  • ลิงก์และบุคคลมีคุณสมบัติย่อย เช่น {Website.text} และ {Owner.email} ดูคุณสมบัติเพิ่มเติมของฟิลด์
  • Lark Base: ฟิลด์สูตรแสดงผลตามชนิดของผลลัพธ์ (ข้อความ ตัวเลข หรือวันที่) ฟิลด์คะแนนมักแสดงเป็น 4/5 และฟิลด์ Lookup แสดงค่าที่ดึงมา

หน้าของแต่ละแหล่งข้อมูลมีรายละเอียดเพิ่มเติม ได้แก่ ส่วนเสริม Excel ลิสต์ SharePoint และ Dataverse ส่วนเสริม Google Sheets และ API เอกสาร

ฟิลเตอร์ตัวเลขและวันที่จะไม่สนใจว่าค่าแสดงผลอย่างไร แต่จะนำค่าดิบที่อยู่เบื้องหลังมาจัดรูปแบบใหม่:

{Price} → "$1,234.50" (ตามที่แหล่งข้อมูลแสดง)
{Price | number:2} → "1,234.50" (ตัวเลขดิบ จัดรูปแบบใหม่)
{Price | currency:"EUR":"de-DE"} → "1.234,50 €" (ตัวเลขดิบ locale เยอรมัน)
{Date} → "2026/02/26" (ตามที่แหล่งข้อมูลแสดง)
{Date | date:"DD MMM YYYY"} → "26 Feb 2026" (วันที่ดิบ จัดรูปแบบใหม่)

ค่าดิบยังเป็นสิ่งที่ sum, avg, max, min, where และ sort ใช้เปรียบเทียบด้วย ค่าดิบคืออะไรขึ้นอยู่กับแหล่งข้อมูล:

แหล่งข้อมูล ตัวเลขดิบ วันที่ดิบ
Excel ค่าของเซลล์ ไม่ว่าจะใช้รูปแบบตัวเลขใด วันและเวลาที่เซลล์เก็บไว้ ตามเขตเวลาของเทมเพลต
ลิสต์ SharePoint ตัวเลขที่จัดเก็บไว้ คอลัมน์วันที่อย่างเดียว: วันนั้น ตามเขตเวลาของเทมเพลต คอลัมน์วันที่และเวลา: ช่วงเวลาที่จัดเก็บไว้
Dataverse ตัวเลขที่จัดเก็บไว้ คอลัมน์วันที่อย่างเดียวหรือคอลัมน์ที่ไม่ขึ้นกับเขตเวลา: วันและเวลาที่คอลัมน์เก็บไว้ ตามเขตเวลาของเทมเพลต คอลัมน์อื่น: ช่วงเวลาที่จัดเก็บไว้
Google Sheets ค่าที่อยู่ใต้รูปแบบของเซลล์ วันและเวลาที่เซลล์เก็บไว้ ตามเขตเวลาของเทมเพลต
Lark Base ตัวเลขของฟิลด์ ช่วงเวลาที่จัดเก็บไว้
API เอกสาร ตัวเลข JSON หรือข้อความที่เป็นตัวเลขธรรมดา เช่น "1234.5" ข้อความ เช่น 2026-02-26 หรือ 2026-02-26 15:30 อ่านตามเขตเวลาของเทมเพลต ข้อความที่มีเขตเวลา เช่น 2026-02-26T15:30:00Z อ่านตามที่เขียน ตัวเลขอ่านเป็นมิลลิวินาทีนับจาก 1 มกราคม 1970 (UTC)
  • ค่าดิบของเปอร์เซ็นต์เป็นเศษส่วน: 12% คือ 0.12 และ percent จะคูณด้วย 100 เมื่อส่งผ่าน API เอกสาร ให้ส่ง 0.12 ไม่ใช่ 12
  • ค่าที่ไม่มีตัวเลขดิบจะแสดงตามเดิมพร้อมคำเตือนเมื่อใช้ฟิลเตอร์ตัวเลข ซึ่งรวมถึงข้อความที่มีตัวคั่น เช่น "1,234.50" ฟิลด์คะแนนของ Lark และฟิลด์ Lookup ของ Lark ที่มีตัวเลขมากกว่าหนึ่งค่า
  • ใน Excel และ Google Sheets เซลล์ที่มีเฉพาะเวลาหรือระยะเวลาถือเป็นข้อความ จะแสดงตามที่เห็นและไม่นับเป็นวันที่
  • เวิร์กบุ๊ก Excel ที่ใช้ระบบวันที่แบบ 1904 จะแสดงวันที่ได้ถูกต้อง แต่เมื่อ AutomaDoc อ่านจาก OneDrive หรือ SharePoint (เทมเพลตที่ผูกกับไฟล์) วันที่ดิบจะเร็วไปสี่ปีกับอีกหนึ่งวัน

ระเบียนที่เชื่อมโยงมาจากตารางที่เกี่ยวข้อง (Excel) Lookup (SharePoint, Dataverse) แท็บที่เกี่ยวข้อง (Google Sheets) ฟิลด์ลิงก์ (Lark Base) หรือออบเจกต์ที่ซ้อนกัน (API เอกสาร) เข้าถึงฟิลด์ของระเบียนเหล่านี้ด้วยเครื่องหมายจุด:

{Customer.Name}
{Customer.Address}
{Customer.Email}

ซ้อนได้ลึกสุด 5 ระดับ:

{Order.Customer.Company.Address.City}

คุณสมบัติเพิ่มเติมของฟิลด์ (เครื่องหมายจุด)

หัวข้อที่มีชื่อว่า “คุณสมบัติเพิ่มเติมของฟิลด์ (เครื่องหมายจุด)”

ลิงก์และบุคคลมีคุณสมบัติย่อยให้เรียกใช้ผ่านเครื่องหมายจุด ฟิลด์บางประเภทของ Lark Base ก็เช่นกัน หากไม่ใช้จุด จะแสดงค่าเริ่มต้น

ลิงก์จากเซลล์ =HYPERLINK(…) ของ Excel คอลัมน์ไฮเปอร์ลิงก์ของ SharePoint เซลล์ Google Sheets ที่เป็นลิงก์เดียว หรือฟิลด์ URL ของ Lark:

{Website} → "https://example.com" (ที่อยู่)
{Website.text} → "Example Site" (ข้อความที่แสดง)
{Website.link} → "https://example.com" (ที่อยู่)

ใน Google Sheets เซลล์ที่มีลิงก์อยู่ภายในข้อความอื่นจะแสดงข้อความนั้น ใน Excel ลิงก์ที่เพิ่มด้วย แทรก → ลิงก์ จะแสดงข้อความของลิงก์

บุคคลหนึ่งคน จากคอลัมน์บุคคลของ SharePoint หรือฟิลด์ Created By หรือ Modified By ของ Lark:

{Owner} → "John Doe" (ชื่อ)
{Owner.name} → "John Doe"
{Owner.email} → "john@example.com" (SharePoint)
{Owner.en_name} → "John Doe" (Lark Base: ชื่อภาษาอังกฤษ)
{Owner.id} → ID ของบุคคลในแหล่งข้อมูล ใน Lark Base คือ ID ผู้ใช้ Lark เช่น "ou_abc123"

ในที่ที่ใส่ได้หลายคน ค่าจะเป็นลิสต์แม้จะมีคนเดียวก็ตาม ดังนั้น {Assignee.name} จะไม่ได้ค่า ได้แก่ ฟิลด์ User ของ Lark เซลล์ชิปบุคคลของ Google Sheets หรือคอลัมน์บุคคลของ SharePoint ที่อนุญาตให้ใส่หลายคน ให้ใช้การระบุลำดับสำหรับบุคคลที่ต้องการ หรือใช้ลูปสำหรับทุกคน:

{Assignee} → "John Doe, Jane Roe" (ทุกชื่อ)
{Assignee[0].name} → "John Doe" (คนแรก)
{Assignee[0].email} → "john@example.com" (SharePoint, Google Sheets)
{#Assignee}
{name}
{/Assignee}

ใน Dataverse บุคคล (เจ้าของ หรือ “created by”) เป็น Lookup: {Owner} แสดงชื่อ และ {Owner.Field} อ่านคอลัมน์ในแถวของบุคคลนั้น เหมือนระเบียนที่เชื่อมโยงอื่น ๆ

{Office} → "Headquarters, 123 Main St, City, Country"
{Office.name} → "Headquarters"
{Office.full_address} → "123 Main St, City, Country"
{Office.address} → "123 Main St"

ฟิลด์กลุ่มเป็นลิสต์ {Team.name} จึงไม่ได้ค่า ให้ใช้การระบุลำดับหรือลูปแทน:

{Team} → "Engineering, Design" (ชื่อกลุ่มคั่นด้วยจุลภาค)
{Team[0].name} → "Engineering" (กลุ่มแรก)
{Team[0].id} → ID ของกลุ่มแรก

หากต้องการทุกกลุ่ม ให้ใช้ลูป:

{#Team}
{name} (ID: {id})
{/Team}

ฟิลด์หลายตัวเลือกของ Lark คอลัมน์ตัวเลือกหรือคอลัมน์ Managed Metadata ของ SharePoint ที่มีหลายค่า ตัวเลือกแบบหลายค่าของ Dataverse หรือดรอปดาวน์แบบเลือกหลายค่าของ Google Sheets สามารถวนลูป หรือเชื่อมค่าด้วยตัวคั่นที่คุณกำหนดเองได้:

{Tags} → "Red, Blue, Green" (ค่าเริ่มต้นคั่นด้วยจุลภาค)
{Tags | join:" / "} → "Red / Blue / Green"
{#Tags}
- {.}
{/Tags}

เมื่อส่งผ่าน API เอกสาร รายการค่าธรรมดาจะมาถึงโดยเชื่อมด้วยจุลภาคไว้แล้ว ดังนั้น {Tags} จะแสดง Red, Blue, Green และวนลูปไม่ได้ หากต้องการวนลูป ให้ส่งรายการออบเจ็กต์

สำหรับฟิลด์ที่เชื่อมกับหลายระเบียน ให้ใช้ไวยากรณ์ลูปเพื่อทำซ้ำเนื้อหาสำหรับแต่ละรายการ:

{#Line_Items}
Product: {Product_Name}
Quantity: {Quantity}
Price: {Price}
{/Line_Items}

{#Field} เปิดลูป และ {/Field} ปิดลูป ภายในลูปให้ใช้ชื่อฟิลด์โดยไม่ต้องใส่ชื่อฟิลด์แม่นำหน้า

คุณสามารถใช้ {/} แทนการพิมพ์ชื่อฟิลด์ซ้ำ:

{#Line_Items}
{Product_Name} - {Price}
{/}

เมื่อวางแท็กลูปไว้ในแถวของตาราง ทั้งแถวจะถูกทำซ้ำสำหรับแต่ละรายการ จึงเหมาะมากสำหรับตารางรายการสินค้า

Product Qty Price
{#Line_Items} {Product_Name} {Quantity} {Price} {/Line_Items}

สำหรับอาร์เรย์ที่เก็บค่าอย่างง่าย (ไม่ใช่อ็อบเจ็กต์) ให้ใช้ {.} เพื่ออ้างถึงรายการปัจจุบัน:

{#Tags}
{.}
{/Tags}

ภายในลูปใด ๆ จะมีตัวแปรพิเศษเหล่านี้ให้ใช้:

ตัวแปร คำอธิบาย ตัวอย่าง
{$index} ลำดับปัจจุบัน (เริ่มที่ 0) 0, 1, 2, …
{$num} หมายเลขแถว (เริ่มที่ 1) 1, 2, 3, …
{$first} เป็น true ที่รายการแรก แสดงค่า true / false
{$last} เป็น true ที่รายการสุดท้าย แสดงค่า true / false

ลูปสามารถซ้อนกันได้ ลูปด้านในยังเข้าถึงฟิลด์จากขอบเขตด้านนอกได้:

{#Departments}
Department: {Name}
{#Employees}
{Name} works in {Department.Name}
{/Employees}
{/Departments}

หากมีชื่อฟิลด์ซ้ำกันทั้งด้านในและด้านนอก ระบบจะให้ความสำคัญกับขอบเขตด้านใน

เพิ่มฟิลเตอร์ที่แท็กเปิดของลูป เพื่อเลือกว่าจะทำซ้ำแถวใดบ้าง และเรียงตามลำดับใด:

{#Line_Items | where:"Status == 'Approved'" | sort:"Amount":"desc" | limit:10}
{Product_Name} {Amount | currency:"USD"}
{/Line_Items}
ฟิลเตอร์ หน้าที่ ตัวอย่าง
where เก็บไว้เฉพาะแถวที่ตรงตามเงื่อนไข where:"Status == 'Approved'"
sort เรียงแถวตามฟิลด์ จากน้อยไปมากหรือจากเก่าไปใหม่ sort:"Due_Date"
sort … หรือจากมากไปน้อยหรือจากใหม่ไปเก่า sort:"Amount":"desc"
limit เก็บไว้เฉพาะแถวแรก ๆ limit:10
offset ข้ามแถวแรก ๆ offset:10
unique เก็บแถวแรกไว้หนึ่งแถวต่อค่าแต่ละค่าของฟิลด์ unique:"Customer"

ฟิลเตอร์ทำงานจากซ้ายไปขวาตามลำดับที่คุณเขียน: sort:"Amount":"desc" | limit:3 คือสามแถวที่มีค่ามากที่สุด ส่วน limit:3 | sort:"Amount":"desc" คือสามแถวแรก เรียงจากมากไปน้อย

เงื่อนไขของ where ให้เขียนไว้ในเครื่องหมายคำพูดคู่ และใส่ค่าที่เป็นข้อความไว้ในเครื่องหมายคำพูดเดี่ยว:

เงื่อนไข เก็บแถวที่
Status == 'Approved' Status เป็น Approved ทุกตัวอักษร
Status != 'Draft' Status เป็นค่าใดก็ได้ที่ไม่ใช่ Draft
Amount > 1000 Amount มากกว่า 1000 (ใช้ >=, <, <= ได้ด้วย)
Paid Paid มีค่า เช่นเดียวกับ {#if Paid}
!Notes Notes ว่าง
  • ตัวเลขจะเปรียบเทียบตามค่าดิบ ไม่ใช่ตามที่แสดงผล: Amount > 1000 ตรงกับ $1,250.00 ให้เขียนตัวเลขแบบธรรมดา คือ 1000 ไม่ใช่ 1,000
  • วันที่จะเปรียบเทียบกันแบบวันที่เมื่อเขียนในรูปแบบ 2026-01-31 (หรือพร้อมเวลา 2026-01-31 17:30) ตามเขตเวลาของเทมเพลต: where:"Due_Date >= '2026-01-01'" การเปรียบเทียบนับเป็นทั้งวัน: Due_Date > '2026-01-31' จะเริ่มตั้งแต่วันที่ 1 กุมภาพันธ์
  • เชื่อมเงื่อนไขด้วย && (และ) และ || (หรือ) และจัดกลุ่มด้วยวงเล็บ: where:"Status == 'Approved' && (Amount > 1000 || Rush)"
  • sort เรียงวันที่ตามลำดับวันที่ ตัวเลขตามลำดับตัวเลข และข้อความตามลำดับตัวอักษร เซลล์ว่างจะอยู่ท้ายสุดเสมอ
  • หากมีฟิลเตอร์ where หลายตัว แถวต้องตรงทุกเงื่อนไข ฟิลเตอร์ sort หลายตัวที่เขียนต่อกันจะเรียงตามตัวแรกก่อน แล้วจึงเรียงตามตัวถัดไปเมื่อค่าของตัวแรกเท่ากัน: sort:"Category" | sort:"Amount":"desc"
  • ฟิลด์ของระเบียนที่เชื่อมโยงใช้ได้ด้วยเครื่องหมายจุด: where:"Product.Category == 'Hardware'"
  • สำหรับรายการค่าอย่างง่าย เช่น ฟิลด์หลายตัวเลือก ให้ใช้ . แทนตัวค่าเอง: {#Tags | where:". != 'Internal'" | sort}
  • ฟิลเตอร์ใช้ได้เหมือนกันทั้งในลูปแถวตาราง ลูปย่อหน้า ลูปซ้อนลูป และรายการรายละเอียดของ Lark Approval

sum, count และ join รับฟิลเตอร์ชุดเดียวกันได้ ผลรวมจึงรวมเฉพาะแถวที่ตารางด้านบนแสดงได้อย่างตรงกันพอดี:

{Line_Items | where:"Status == 'Approved'" | sum:"Amount" | currency:"USD"}
{Line_Items | where:"Status == 'Approved'" | count} approved items

หากใช้ฟิลเตอร์ในผลรวมไม่ได้ ผลรวมจะเว้นว่างไว้พร้อมคำเตือน แทนที่จะรวมทุกแถว

เพิ่ม horizontal ให้กับลูปที่อยู่ในตาราง เพื่อทำซ้ำเซลล์ในแนวนอน หนึ่งคอลัมน์ต่อหนึ่งรายการ แทนการทำซ้ำแถวลงด้านล่าง:

ป้ายกำกับ ทำซ้ำในแนวนอน
Name {#Staff | horizontal} {Name}
Role {Role} {/Staff}

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

  • คอลัมน์ใหม่จะแบ่งความกว้างของเซลล์ในเทมเพลตเท่า ๆ กัน และคงเส้นขอบกับการแรเงาของเซลล์ไว้
  • ใช้ร่วมกับฟิลเตอร์อื่นได้: {#Staff | where:"Active" | sort:"Name" | horizontal}
  • สูงสุด 20 คอลัมน์ รายการที่เกินจากนั้นจะถูกตัดออกพร้อมคำเตือน
  • หากรายการว่าง เซลล์จะเว้นว่างไว้แทนที่จะถูกลบ
  • ลูปแนวนอนวางไว้ในลูปแถวได้: แต่ละแถวจะมีจำนวนคอลัมน์เท่ากับจำนวนรายการในลิสต์ของแถวนั้นเอง
  • นอกตาราง horizontal จะถูกข้ามพร้อมคำเตือน และลูปจะทำซ้ำตามปกติ

แสดงหรือซ่อนเนื้อหาตามค่าของฟิลด์

แสดงเนื้อหาเฉพาะเมื่อฟิลด์มีข้อมูล:

{#if Discount}
Discount applied: {Discount}
{/if}

แสดงเนื้อหาเฉพาะเมื่อฟิลด์ว่าง:

{#if !Notes}
No additional notes.
{/if}
{#if Status == "Approved"}
This invoice has been approved.
{/if}
{#if Status != "Draft"}
This document has been submitted.
{/if}

>, >=, < และ <= เปรียบเทียบตัวเลขตามค่าจริง และเปรียบเทียบวันที่แบบวันที่ (เขียนเป็น 2026-01-31 ตามเขตเวลาของเทมเพลต):

{#if Amount > 1000}
Requires a second approval.
{/if}
{#if Due_Date < "2026-01-01"}
Overdue.
{/if}

== และ != ใน {#if} จะเปรียบเทียบข้อความตามที่พิมพ์ออกมา: {#if Qty == "2"} จะไม่ตรงกับจำนวนที่แสดงเป็น 2.00 ส่วนในฟิลเตอร์ where หรือส่วน {#Qty == 2}…{/} จะตรงกับตัวเลขเดียวกันหรือวันเดียวกันด้วย

ฟิลเตอร์ใช้เปลี่ยนวิธีแสดงค่า โดยใช้เครื่องหมายไปป์ (|):

{Field | filterName}
{Field | filterName:"arg1":"arg2"}

ฟิลเตอร์จะทำงานหลังจากดึงค่ามาแล้ว และก่อนนำไปใส่ในเอกสาร หากไม่ใช้ฟิลเตอร์ ค่าจะแสดงตามที่แหล่งข้อมูลแสดง (ดูตัวแทนค่าแสดงผลอะไร)

ฟิลเตอร์ คำอธิบาย ตัวอย่าง ผลลัพธ์
upper ตัวพิมพ์ใหญ่ทั้งหมด {Name | upper} ACME CORP
lower ตัวพิมพ์เล็กทั้งหมด {Name | lower} acme corp
capitalize ขึ้นต้นแต่ละคำด้วยตัวพิมพ์ใหญ่ {Name | capitalize} Acme Corp
trim ตัดช่องว่างหน้า-หลัง {Name | trim} Acme Corp
truncate ตัดให้สั้นตามความยาว (ค่าเริ่มต้น 50) {Description | truncate:16} Lorem ipsum dolo...
pad เติมอักขระให้ครบ (ค่าเริ่มต้น 0) {$num | pad:3} 001

number, currency และ percent รับพารามิเตอร์ locale เพิ่มเติมได้ เพื่อจัดรูปแบบตามภูมิภาค:

ฟิลเตอร์ พารามิเตอร์ ตัวอย่าง ผลลัพธ์
number ทศนิยม, locale {Price | number:2} 1,234.50
number ทศนิยม, locale {Price | number:2:"de-DE"} 1.234,50
currency รหัสสกุลเงิน, locale {Price | currency:"USD"} $1,234.50
currency รหัสสกุลเงิน, locale {Price | currency:"EUR":"de-DE"} 1.234,50 €
currency รหัสสกุลเงิน, locale {Price | currency:"JPY":"ja-JP"} ¥1,235
currency รหัสสกุลเงิน, locale, ทศนิยม {Price | currency:"IDR":"id-ID":2} Rp 1.234,50
percent ทศนิยม, locale {Rate | percent:1} 45.6%
percent ทศนิยม, locale {Rate | percent:1:"de-DE"} 45,6 %
toFixed ทศนิยม {Price | toFixed:2} 1234.50 (ไม่มีตัวคั่นหลักพัน)
chineseUppercase ไม่มี {Amount | chineseUppercase} 捌万捌仟捌佰捌拾捌
chineseLowercase ไม่มี {Amount | chineseLowercase} 八八八八八
chineseFinancial ไม่มี {Amount | chineseFinancial} 捌万捌仟捌佰捌拾捌元整

จัดรูปแบบวันที่ด้วยรูปแบบที่กำหนดเอง เมื่อรูปแบบของวันที่ในข้อมูลของคุณไม่ใช่แบบที่ต้องการ

ไวยากรณ์: {Field | date:"format":"timezone":"locale"}

พารามิเตอร์ทั้งหมดไม่บังคับ เขตเวลาเริ่มต้นคือเขตเวลาของเทมเพลต (เทมเพลต → ผลลัพธ์ → เขตเวลา) หรือ UTC หากไม่ได้ตั้งไว้ และ locale เริ่มต้นคือ en-US วันที่ที่ส่งมาเป็นข้อความโดยไม่มีเขตเวลา เช่น 2026-01-31 จาก API เอกสารหรือแบบฟอร์ม Lark Approval จะแสดงเป็นวันนั้นเสมอไม่ว่าเขตเวลาจะเป็นอะไร

ฟิลเตอร์ พารามิเตอร์ ตัวอย่าง ผลลัพธ์
date รูปแบบ, เขตเวลา, locale {Date | date:"DD MMM YYYY"} 26 Feb 2026
date รูปแบบ, เขตเวลา, locale {Date | date:"dddd, DD MMMM YYYY"} Thursday, 26 February 2026
date รูปแบบ, เขตเวลา, locale {Date | date:"DD MMMM YYYY":"UTC":"fr-FR"} 26 février 2026
date รูปแบบ, เขตเวลา, locale {Date | date:"dddd, DD MMMM YYYY":"UTC":"de-DE"} Donnerstag, 26 Februar 2026

ตัวระบุรูปแบบวันที่ที่รองรับ:

ตัวระบุ ผลลัพธ์ ตัวอย่าง
YYYY ปีแบบ 4 หลัก 2026
MMMM ชื่อเดือนเต็ม (ตาม locale) February, février, Februar
MMM ชื่อเดือนย่อ (ตาม locale) Feb, févr., Feb
MM เดือนแบบ 2 หลัก 02
dddd ชื่อวันเต็ม (ตาม locale) Thursday, Donnerstag, 木曜日
ddd ชื่อวันย่อ (ตาม locale) Thu, Do, 木
DD วันที่แบบ 2 หลัก 26
HH ชั่วโมงแบบ 24 ชั่วโมง 15
mm นาที 30
ss วินาที 00

ตัวอย่าง:

{Invoice_Date | date:"DD MMM YYYY"} → 26 Feb 2026
{Invoice_Date | date:"YYYY-MM-DD"} → 2026-02-26
{Invoice_Date | date:"MM/DD/YYYY"} → 02/26/2026
{Invoice_Date | date:"DD/MM/YYYY":"Asia/Tokyo"} → 26/02/2026 (เขตเวลาโตเกียว)
{Invoice_Date | date:"dddd, DD MMMM YYYY":"UTC":"ja-JP"} → 木曜日, 26 2月 2026
{Invoice_Date | date:"DD MMMM YYYY":"UTC":"id-ID"} → 26 Februari 2026
ฟิลเตอร์ คำอธิบาย ตัวอย่าง ผลลัพธ์
join เชื่อมค่าในอาร์เรย์ (ค่าเริ่มต้น , ) {Tags | join:" / "} Red / Blue / Green
join เชื่อมฟิลด์หนึ่งของแต่ละแถว โดยข้ามค่าที่ว่าง {Items | join:", ":"Name"} Widget, Gadget
sum รวมค่าของฟิลด์จากทุกแถวในลูป {Items | sum:"Price"} 1234.5
sum ผลรวม จัดรูปแบบด้วยฟิลเตอร์ถัดไป {Items | sum:"Price" | currency:"USD"} $1,234.50
count จำนวนแถวในลูป {Items | count} 12
avg ค่าเฉลี่ยของฟิลด์จากทุกแถว (ไม่นับเซลล์ว่าง) {Items | avg:"Price"} 411.5
max / min ค่ามากที่สุด / น้อยที่สุดของฟิลด์จากทุกแถว {Items | max:"Price"} $980.00
default ค่าสำรองเมื่อว่าง {Phone | default:"N/A"} N/A

ต่อฟิลเตอร์หลายตัวได้ด้วยไปป์ โดยทำงานจากซ้ายไปขวา:

{Name | trim | upper} → " hello " กลายเป็น "HELLO"
{$num | pad:3} → 1 กลายเป็น "001"
{Phone | default:"N/A" | upper} → null กลายเป็น "N/A"

ฟิลเตอร์ใช้ได้กับตัวแปรของลูปและการอ้างถึงรายการปัจจุบันด้วย:

{#Items}
#{$num | pad:3} - {Name | upper}
{/Items}
{#Tags}{. | capitalize}, {/Tags}

แทนที่รูปภาพตัวแทนค่าด้วยรูปจากข้อมูลของคุณ: คอลัมน์รูปภาพของตาราง Excel หรือลิสต์ SharePoint คอลัมน์รูปภาพของ Dataverse เซลล์ชิปไฟล์หรือ =IMAGE(…) ใน Google Sheets ฟิลด์ไฟล์แนบของ Lark หรือ URL ของรูปภาพที่ส่งไปยัง API เอกสาร ตารางด้านบนแสดงว่าแต่ละแหล่งข้อมูลมีอะไรให้ใช้

  1. แทรกรูปภาพใดก็ได้ลงในเทมเพลต Word (รูปนี้คือตัวแทนค่า)
  2. คลิกขวาที่รูป → Edit Alt Text
  3. ในช่องคำอธิบาย Alt Text ให้พิมพ์ {FieldName}
  4. บันทึกเทมเพลต

รูปตัวแทนค่าจะถูกแทนที่ด้วยรูปจากฟิลด์นั้น โดยคงขนาดของตัวแทนค่าไว้

สำหรับฟิลด์ที่มีไฟล์แนบหลายไฟล์ ให้ใช้การระบุลำดับ:

{Photo} → รูปแรก (เท่ากับ {Photo[0]})
{Photo[1]} → รูปที่สอง
{Photo[2]} → รูปที่สาม

สำหรับฟิลด์ที่มีจำนวนไฟล์แนบไม่แน่นอน ให้ใช้ไวยากรณ์ลูปโดยตั้ง {.} เป็น alt text ของรูป ไฟล์แนบแต่ละไฟล์จะขยายเป็นสำเนาของตัวแทนค่าเอง:

{#Product_Photos}
[รูปภาพที่มี alt text: {.}]
{/Product_Photos}

เมื่ออยู่ในตาราง ไฟล์แนบแต่ละไฟล์จะได้แถวของตัวเอง:

# Photo Filename
{#Product_Photos} {$num} alt ของรูป: {.} {name} {/Product_Photos}

คุณสมบัติที่ใช้ได้ภายในลูป:

ตัวแปร คำอธิบาย ตัวอย่าง
{name} ชื่อไฟล์ photo1.jpg
{type} ชนิด MIME image/jpeg
{size} ขนาดไฟล์ (ไบต์) 204800

ตัวแทนค่ารูปภาพใช้ได้ภายในบล็อกลูปเช่นกัน แต่ละรอบจะดึงรูปของรายการนั้น:

{#Employees}
Name: {Name}
Photo: [รูปภาพที่มี alt text: {Photo}]
{/Employees}

สร้าง QR โค้ดและบาร์โค้ดจากค่าของฟิลด์ ตั้งค่าเหมือนกับรูปภาพแบบไดนามิก คือผ่าน Alt Text ของรูป

{QR:FieldName}

ตัวอย่าง: {QR:Order_ID} จะสร้าง QR โค้ดที่บรรจุค่าของ Order_ID

ไวยากรณ์ ชนิด หมายเหตุ
{BARCODE:FieldName} Code128 ค่าเริ่มต้น รองรับตัวอักษรและตัวเลข
{BARCODE128:FieldName} Code128 ระบุ Code128 อย่างชัดเจน
{BARCODE39:FieldName} Code39 เฉพาะตัวพิมพ์ใหญ่และตัวเลข
{BARCODEEAN13:FieldName} EAN-13 รหัสสินค้าค้าปลีก 13 หลัก
{BARCODEEAN8:FieldName} EAN-8 EAN แบบสั้น 8 หลัก
{BARCODEUPCA:FieldName} UPC-A ค้าปลีกอเมริกาเหนือ 12 หลัก
{BARCODEUPCE:FieldName} UPC-E UPC แบบย่อ
{BARCODEITF14:FieldName} ITF-14 รหัสขนส่ง / ลังสินค้า
{BARCODEDATAMATRIX:FieldName} DataMatrix 2 มิติ ความหนาแน่นสูง
{BARCODEPDF417:FieldName} PDF417 2 มิติ แบบเส้นซ้อนชั้น

คำนำหน้าไม่แยกตัวพิมพ์เล็ก-ใหญ่: {qr:Field} และ {QR:Field} ใช้ได้เหมือนกัน

ไวยากรณ์ตัวแทนค่าทั้งหมดใช้ได้ในหัวกระดาษและท้ายกระดาษเช่นเดียวกับในเนื้อหาหลัก

การใช้งานที่พบบ่อย:

  • ชื่อบริษัทหรือโลโก้ในหัวกระดาษ
  • เลขที่เอกสารหรือวันที่ในท้ายกระดาษ
  • ป้ายกำกับแบบไดนามิก เช่น Invoice for {Customer_Name}

วิธีเพิ่ม: Insert → Header/Footer → Edit แล้วพิมพ์ตัวแทนค่า เช่น {Field_Name}

เทมเพลตที่เขียนไว้สำหรับแอปเอกสาร Lark อื่นใช้ที่นี่ได้โดยไม่ต้องแก้ไข อัปโหลดไฟล์ Word ตามเดิมได้เลย ไวยากรณ์ของเทมเพลตเหล่านั้นทำงานใน AutomaDoc ดังนี้:

รูปแบบที่เขียน การทำงานที่นี่
{#isNew} Welcome {/isNew} แสดงข้อความเมื่อฟิลด์มีค่า หากเป็นลิสต์ จะทำงานเป็นลูป
{#!isNew}Welcome{/isNew} แสดงข้อความเมื่อฟิลด์ว่าง ไม่ได้ติ๊ก หรือเป็นลิสต์ว่าง
{#Status=="Paid"}…{/} แสดงข้อความเมื่อเงื่อนไขเป็นจริง ใช้ !=, >, >=, <, <=, && และ || ได้ด้วย
{/} ปิดลูปหรือส่วนที่เปิดอยู่ซึ่งใกล้ที่สุด
{$index+1} หมายเลขแถว เริ่มที่ 1 เหมือนกับ {$num}
{#Items | sortBy:"Total":"desc"} เหมือนกับ sort
{#Items | where:"A == 'x' && B > 5"} เก็บเฉพาะแถวที่ตรงเงื่อนไข เช่นเดียวกับในการกรอง การเรียงลำดับ และการจำกัดจำนวนแถว
{>Items}{Name} ที่ต้นแถวของตาราง ทำซ้ำเซลล์นั้นและเซลล์ทางขวาไปตามแนวแถว หนึ่งคอลัมน์ต่อหนึ่งรายการ นี่คือลูปแนวนอน
{#image}{#$isImage}{%src}{/}{#!$isImage}{$fileName}{/}{/image} พิมพ์รูปภาพทุกรูปของฟิลด์ไฟล์แนบ และชื่อของทุกไฟล์ที่ไม่ใช่รูปภาพ
{%src | size:100:50} / {%src | maxSize:500:500} รูปภาพขนาดตรงตามที่กำหนด หรือไม่เกินขนาดนั้น หน่วยเป็นพิกเซล
{%Logo} รูปภาพแรกของฟิลด์ไฟล์แนบ ตามขนาดจริงของรูป แต่ไม่เกินความกว้างของหน้า
{Name | uppercase} / {Name | lowercase} เหมือนกับ upper / lower
{Price | toFixed:"2"} ตัวเลขทศนิยมสองตำแหน่ง ไม่มีตัวคั่นหลักพัน
{Price | currency:'USD'} อาร์กิวเมนต์ในเครื่องหมายคำพูดเดี่ยวใช้ได้เหมือนในเครื่องหมายคำพูดคู่
{Date | customDate:'YYYY-MM-DD HH:mm:ss'} ใช้ตัวระบุรูปแบบเดียวกับ date ตามเขตเวลาของเทมเพลต
{Date | date:'full'} 2024-7-13 Saturday 00:00:00
chineseUppercase, chineseLowercase, chineseFinancial ตัวเลขแบบภาษาจีน ดูฟิลเตอร์ตัวเลข
ไวยากรณ์ คำอธิบาย
{Field} ตัวแปรทั่วไป
{Field.Nested} ฟิลด์ของระเบียนที่เชื่อมโยง (เครื่องหมายจุด)
{Link.text} / {Link.link} คุณสมบัติย่อยของลิงก์
{Owner.name} / .email / .id คุณสมบัติย่อยของบุคคลหนึ่งคน (.en_name ใน Lark Base)
{Assignee[0].name} หลายคน (เป็นลิสต์ จึงต้องระบุลำดับหรือวนลูป)
{Location.name} / {Location.full_address} คุณสมบัติย่อยของตำแหน่งที่ตั้งใน Lark Base
{Team[0].name} / {Team[0].id} ฟิลด์กลุ่มของ Lark Base (เป็นลิสต์ จึงต้องระบุลำดับหรือวนลูป)
{#Field}...{/Field} วนลูปฟิลด์หลายค่า
{#Field | where:"Status == 'Paid'"} วนลูปเฉพาะแถวที่ตรงเงื่อนไข
{#Field | sort:"Amount":"desc"} วนลูปตามลำดับ จากมากไปน้อย
{#Field | limit:5} / {#Field | offset:5} 5 แถวแรก / ทุกแถวยกเว้น 5 แถวแรก
{#Field | horizontal} ทำซ้ำเซลล์ตารางในแนวนอน หนึ่งคอลัมน์ต่อหนึ่งแถว
{Field | where:"Paid" | sum:"Amount"} ผลรวมของแถวที่ตรงเงื่อนไข
{Field | count} จำนวนแถว
{Field | avg:"Amount"} / max / min ค่าเฉลี่ย ค่ามากที่สุด ค่าน้อยที่สุดของแถว
{#Field == "v"}...{/} ส่วนที่แสดงเมื่อเงื่อนไขเป็นจริง
{#!Field}...{/Field} ส่วนที่แสดงเมื่อฟิลด์ว่าง
{#if Field > 100}...{/if} เงื่อนไข (ลำดับตัวเลขหรือวันที่)
{/} แท็กปิดแบบย่อ (ปิดลูปที่ใกล้ที่สุด)
{.} รายการปัจจุบันในลูป (อาร์เรย์อย่างง่าย)
{$index} ลำดับในลูป (เริ่มที่ 0)
{$num} หมายเลขแถว (เริ่มที่ 1)
{$first} / {$last} บูลีนรายการแรก/สุดท้าย
{#if Field}...{/if} เงื่อนไข (มีค่า)
{#if !Field}...{/if} เงื่อนไข (ว่าง)
{#if Field == "val"}...{/if} เงื่อนไข (เท่ากับ)
{#if Field != "val"}...{/if} เงื่อนไข (ไม่เท่ากับ)
{Field | upper} ฟิลเตอร์: ตัวพิมพ์ใหญ่
{Field | lower} ฟิลเตอร์: ตัวพิมพ์เล็ก
{Field | capitalize} ฟิลเตอร์: ขึ้นต้นคำด้วยตัวพิมพ์ใหญ่
{Field | trim} ฟิลเตอร์: ตัดช่องว่าง
{Field | truncate:30} ฟิลเตอร์: ตัดสั้นพร้อมจุดไข่ปลา
{Field | pad:3} ฟิลเตอร์: เติมศูนย์
{Field | number:2} ฟิลเตอร์: ตัวเลขพร้อมทศนิยม
{Field | number:2:"de-DE"} ฟิลเตอร์: ตัวเลขตาม locale
{Field | currency:"USD"} ฟิลเตอร์: รูปแบบสกุลเงิน
{Field | currency:"EUR":"de-DE"} ฟิลเตอร์: สกุลเงินตาม locale
{Field | percent:1} ฟิลเตอร์: เปอร์เซ็นต์
{Field | date:"DD MMM YYYY"} ฟิลเตอร์: รูปแบบวันที่กำหนดเอง
{Field | date:"dddd, MMMM DD":"UTC":"fr-FR"} ฟิลเตอร์: วันที่ตาม locale
{Field | join:" / "} ฟิลเตอร์: เชื่อมอาร์เรย์ด้วยตัวคั่น
{Field | default:"N/A"} ฟิลเตอร์: ค่าสำรอง
{Field | trim | upper} ต่อฟิลเตอร์ (ซ้ายไปขวา)
{Photo} / {Photo[1]} รูปภาพ (ผ่าน Alt Text)
{QR:Field} QR โค้ด (ผ่าน Alt Text)
{BARCODE:Field} บาร์โค้ด (ผ่าน Alt Text)