ข้อผิดพลาดของสูตรที่พบบ่อย
ดูข้อมูลเกี่ยวกับข้อผิดพลาดทั่วไปที่อาจเกิดขึ้นกับสูตรใน Notion และวิธีแก้ไขปัญหา 🔨
If you’re unsure how to fix the errors in your formula, Notion AI can help. Learn more here →
หากคุณไม่มีสิทธิ์เข้าถึงฐานข้อมูลที่ถูกอ้างอิง สูตรจะไม่สามารถคำนวณได้อย่างน่าเชื่อถือ ทั้งนี้เนื่องจากสูตรจำเป็นต้องเข้าถึงฐานข้อมูลต้นทางและการกำหนดค่าพร็อพเพอร์ตี้ของฐานข้อมูลนั้น
วิธีแก้ไข
ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์เข้าถึง ทุก หน้าและฐานข้อมูลที่ถูกอ้างอิงในสูตรของคุณภายในปุ่มหรือการทำงานอัตโนมัติของฐานข้อมูล
ต่างจากพร็อพเพอร์ตี้สูตรในฐานข้อมูลแล้ว สูตรในอัตโนมัติจะคาดหวังให้สูตรส่งคืนประเภทผลลัพธ์ที่เฉพาะเจาะจง (เช่น วันที่, ข้อความ, ตัวเลข, บุคคล) มิฉะนั้นการทำงานอัตโนมัติจะไม่สามารถบันทึกและดำเนินการได้อย่างถูกต้อง
วิธีแก้ไข
ตรวจสอบให้แน่ใจว่าสูตรส่งคืนค่าประเภทที่ถูกต้อง ตัวอย่างเช่น หากเขียนสูตรเพื่อกำหนดค่าพร็อพเพอร์ตี้บุคคลของหน้า สูตรจะต้องส่งคืนผู้ใช้หรือลิสต์ของผู้ใช้ ไม่ใช่วันที่ หรืออีกทางหนึ่ง หากประเมินเงื่อนไขเฉพาะสำหรับพร็อพเพอร์ตี้ประเภทอาร์เรย์ (เช่น multi-select) ตรวจสอบให้แน่ใจว่าใช้ .includes แทน == ในคำสั่ง if() ของคุณ
สาเหตุทั่วไปของข้อผิดพลาดนี้คือการใช้ประเภทที่แตกต่างกันเพื่อแสดงค่าว่าง ตัวอย่างเช่น ในสูตรอย่าง if(Date, Date.dateAdd(1, “day”), “”) ประเภทผลลัพธ์จะไม่ทราบแน่ชัดเพราะอาจเป็นได้ทั้งวันที่หรือข้อความ (เนื่องจาก “”) ปัญหานี้สามารถแก้ไขได้โดยใช้ empty() เพื่อแสดงค่าว่างแทน ดังนั้นสูตรที่แก้ไขแล้วจะมีลักษณะเป็น if(Date, Date.dateAdd(1, “day”), empty())
สูตรของ Notion สามารถ ซ้อนกันได้สูงสุด 15 ชั้น ทุกครั้งที่สูตรอ้างอิงถึงสูตรหรือ rollup อื่น จะถือเป็นการเพิ่มชั้นขึ้นมาหนึ่งชั้น ซึ่งจะมีผลแม้ว่าสูตรนั้นจะอยู่ในฐานข้อมูลอื่นก็ตาม
เมื่อถึงขีดจำกัดนี้ Notion จะแสดงข้อความแสดงข้อผิดพลาด
วิธีแก้ไข
ลดความซับซ้อนการตั้งค่าของคุณโดยการรวมสูตรและ rollup ที่ไม่จำเป็นเข้าด้วยกันในพร็อพเพอร์ตี้ที่น้อยลง ลองมองหาสูตรที่ทำงานซ้ำซ้อนและพยายามรวมเป็นสูตรเดียว
หากมีการกำหนดตัวแปรแบบกำหนดเอง ไว้ภายในแอ็กชันการทำงานอัตโนมัติเดียวกัน ตัวแปรเหล่านั้นจะไม่สามารถอ้างอิงถึงกันและกันได้
ตัวอย่างเช่น หากคุณกำหนด var1 และ var2 ในการดำเนินการเดียวกัน var2 จะไม่สามารถใช้ var1 ในคำจำกัดความของมันได้
วิธีแก้ไข
กำหนดตัวแปรแต่ละตัวใน แอ็กชันแยก (เริ่มด้วยการสร้างตัวแปรแรก จากนั้นเพิ่มแอ็กชันใหม่สำหรับตัวแปรถัดไป) เพื่อให้ระบบรับรู้ตัวแปรแต่ละตัวได้อย่างถูกต้อง
ในปัจจุบัน ตัวแปรที่กำหนดในการทำงานอัตโนมัติอาจไม่สามารถนำไปใช้เพื่อกรองหน้าในฐานข้อมูลที่คุณต้องการให้การทำงานอัตโนมัติดำเนินการได้ (เช่น “แก้ไขหน้าที่ตรงกับตัวกรองที่มี ตัวแปร”)
วิธีแก้ไข
กำหนดตัวแปรแบบกำหนดเองเป็น
หน้านี้โดยการพิมพ์หน้าทริกเกอร์ในช่องสูตรเพิ่มการดำเนินการ
แก้ไขหน้าในและเลือกตัวแปรแบบกำหนดเองจากขั้นตอนที่ 1 เป็นเป้าหมายของคุณ
เมื่อทำงานกับพร็อพเพอร์ตี้ความสัมพันธ์, rollup และบุคคลในสูตร สูตรจะส่งคืนลิสต์ของหน้า หรือ บุคคล หากต้องการอ้างอิงพร็อพเพอร์ตี้ภายในความสัมพันธ์ คุณจำเป็นต้องกำหนดองค์ประกอบแรก มิฉะนั้น ระบบอัตโนมัติของคุณจะหยุดทำงาน คุณอาจพบปัญหานี้เมื่อสร้างสูตรที่ใช้ฟังก์ชัน map สำหรับพร็อพเพอร์ตี้ความสัมพันธ์
วิธีแก้ไข
ใช้ฟังก์ชันอย่าง .first() หรือ .at(0) เพื่อรับองค์ประกอบแรก หรือวนซ้ำผ่านรายการหน้าด้วยฟังก์ชันอย่าง .map() , .filter() , .every(), .some(), .find()
หากสูตรพบค่าว่างโดยไม่คาดคิด (โดยทั่วไปคือค่าวันที่หรือบุคคล) ระบบอัตโนมัติจะได้รับข้อผิดพลาดและหยุดทำงานโดยอัตโนมัติ
วิธีแก้ไข
ใช้ if หรือ ifs เพื่อตรวจสอบว่าพร็อพเพอร์ตี้ที่กำลังดำเนินการมีค่าอยู่หรือไม่ ตัวอย่างเช่น แทนที่จะใช้ Date.dateAdd(1, "day") ควรใช้ if(Date, Date.dateAdd(1, "day"), empty()) วิธีนี้ช่วยให้มั่นใจได้ว่า dateAdd จะดำเนินการก็ต่อเมื่อ Date มีค่าอยู่ และบอกระบบอัตโนมัติให้ล้างพร็อพเพอร์ตี้ที่กำลังอัปเดตเมื่อ Date ว่าง หรืออีกทางหนึ่ง ให้ตั้งค่ามุมมองด้วยตัวกรองที่รับประกันว่าพร็อพเพอร์ตี้ที่กำลังดำเนินการมีค่าอยู่ และกำหนดค่าระบบอัตโนมัติให้ทำงานเฉพาะกับหน้าที่อยู่ในมุมมองนั้น
หากสูตรของคุณไม่ทำงานตามที่คาดไว้ อาจเป็นเพราะข้อผิดพลาดทางไวยากรณ์ เช่น วงเล็บหาย ตัวดำเนินการไม่ถูกต้อง หรือฟังก์ชันที่ไม่รองรับ สำหรับรายละเอียดทั้งหมดเกี่ยวกับไวยากรณ์ของสูตร โปรดอ่าน บทความนี้ →
