Localization, Access, and Source การเลือกแหล่งข้อมูลดาต้า

จากหน้าต่าง Editor ของการเขียนแอพด้วยแอพชีท ผู้ใช้งานสามารถเข้าถึงแหล่งข้อมูล เพื่อนำมาใช้แสดงในแอพ ได้หลายวิธี จากตารางข้อมูล รวมทั้งการเพิ่มตัวกรองการรักษาความปลอดภัย 
การควบคุมผู้ใช้งาน คนไหนสามารถเข้าถึงข้อมูล 
สามารถเปลี่ยนแอพ local ได้ด้วย 
ดูเพิ่มเติมที่ Locales: Diving Deeper.

สำหรับส่วนท้ายของหน้าการเขียนแอพ แสดงข้อมูล แหล่งที่มาของข้อมูลที่เราเข้าถึง และนำมาใช้งาน ที่อยู่ URL จะมองเห็นได้ และสามารถดูว่า แผ่นงานที่เท่าไร รวมทั้งแหล่งข้อมูลของผู้ให้บริการข้อมูล Cloud Server



วิธีกำหนดเงื่อนไขการทำงานของแอพ Expression Assistant and Expression Builder

การเขียนแอพ จะต้องมีการกำหนดเงื่อนไขให้แอพทำงานตามที่เราต้องการ โดยใน AppSheet นั้น จะอาศัยการสร้างประโยคเงื่อนไข เพื่อควบคุมการทำงาน
การใส่เงื่อนไข การทำงาน สามารถเจอได้เกือบทุกที่ในการสร้างแอพ  โดยคลิกที่รูป icon ขวดแก้ววัดปริมาตร เมื่อคลิกแล้ว จะเข้าสู่หน้าต่าง ตัวช่วยการสร้างเงื่อนไข 

การเข้าถึงตัวช่วยสร้างเงื่อนไข 
ไปที่คอลัมน์ แท็บ แล้วเลือก Edit ไอคอน 


จากนั้น คลิกเข้าไปที่รูปไอค่อน ขวดแก้ววัดปริมาตร เล็ก ๆ

ภาพหน้าต่าง แสดงตัวช่วยในการระบุเงื่อนไขการทำงาน 
ตัวช่วยในการสร้างมี 3 แบบด้วยกัน ให้เลือกใช้งาน คือ 
Pre-made สร้างไว้แล้ว สามารถนำมาใช้งาน  เพื่อเป็นตัวอย่าง หรือแก้ไขนิดหน่อย ให้ทำงานได้ 
แบบ 2 คือ ผู้ใช้งานเขียนเงื่อนไขเอง 
แบบ 3 คือ Test ทดสอบว่าเงื่อนไข ทำงานถูกต้อง 


วิธีใช้งานฟังก์ชั่นวันที่และเวลา AppSheet Date and Time Function

การสร้างแอพด้วยแอพชีท มันจะต้องเกี่ยวข้องกับข้อมูลของวันที่และเวลา

ฟังก์ชั่น วันที่และเวลา 
ในแอพชีพ มีอะไรบ้าง 

Current Date & Time

  • NOW() fเวลาปัจจุบัน อ้างอิงตามเวลาของอุปกรณ์ผู้ใช้งาน คอม หรือ มือถือ ก็ว่าไป
  • TODAY() วันนี้ เทียบได้กับ DATE(NOW())
  • TIMENOW() เวลาปัจจุบัน อ้างตามเวลาเครื่อง เทียบได้กะบ TIME(NOW()). TIME().
  • UTCNOW() เวลาปัจจุบัน โดยไม่มีเขตเวลา

ค่าของ NOW(), TODAY(), and TIMENOW() สะท้อนเขตเวลาเริ่มต้น ของอุปกรณ์ผู้ใช้งาน เช่น , ถ้าเขตเวลาเป็น Pacific Standard Time (PST), ค่าที่จะแสดงออกมาคือ UTC-08:00;ถ้าเขตเวลาเป็น Hong Kong, ค่าออกมาเป็น UTC+8:00.

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


หน่วยเวลา

  • HOUR() ช่วงเวลา เป็นขั่วโมง
  • MINUTE() ช่วงเวลาเป็นนาที
  • SECOND() ช่วงเวลาเป็นวินาที

แต่ละ ชั่วโมง HOUR(), นาที MINUTE(), วินาที SECOND() ยอมรับค่าการใส่ค่าช่วงเวลา ไม่ใช่ ค่าเวลา (งงแปบ) การแปลงค่าเวลา Time value เป็นช่วงเวลา Duration value, ลบออกด้วย Time value. ตัวอย่างแปลงค่า วันที่และเวลาปัจจุบัน เป็น ลำดับเวลา TIMENOW() - "00:00:00".

หน่วยวันที่

Date Components

  • DAY() วันจากเดือน คุณสมบัติ Date.
  • EOMONTH() คำนวณค่าวันสุดท้ายของเดือน จำนวนของเดือน ตัวประกอบ ของเดือน จำนวนวันของเดือนที่ไม่เท่ากัน และปี อธิสุระทิน
  • MONTH() จำนวนของดือนจากวันที่ 
  • YEAR() จำนวนปีจากวัน 
  • WEEKDAY() วันจาก  Date วันอาทิตย์  1, วันเสาร์ 7.
  • WEEKNUM() จำนวนสัปดาห์จาก Date เริ่มต้นด้วยวันอาทิตย์ 
  • WORKDAY() วันทำงาน เว้นวันหยุด และเสาร์อาทิตย์ 

รูปแบบของวันที่และเวลา เป็นข้อความ 

  • TEXT() ยอมรับ  DateTime, Date, หรือ  Time และรูปแบบข้อความ และคืนค่าเป็นข้อความ 

การใช้ตัวดำเนินการทางเวลา 

For backwards compatibility, we also support the function syntax below for a set of functions that have been supported from the earliest AppSheet release.

รูปแบบที่สามารถรองรับการใช้งาน จากเวอร์ชั่นเดิม ถึงปัจจจุบัน 

  • @(_NOW)มาเป็น  NOW().
  • @(_TODAY)เป็น  TODAY().
  • @(_TIMENOW) เป็น  TIMENOW().

ตัวอย่างการคำนวณเกี่ยวกับวันที่ 

  • TODAY() + 1: บวก 1 วัน  (a Number) ต่อจากวันที่ปัจจุบัน 
  • TODAY() - 3 : ลบ 3 วัน  (a Number) ต่อจากวันที่ปัจจุบัน 
  • [StartDate] + 7 : บวก 7 วัน  (a Number) จากวันที่กำหนด  
  • TODAY() - (WEEKDAY(TODAY()) - 1)  : วันที่ต่อมาจากวันที่กำหนด อาทิตย์ คือ  
  • TODAY() - (WEEKDAY(TODAY()) - 2)  :วันต่อจากวันที่กำหนดวันจันทร์ คือ .

ตัวอย่างการคำนวณเกี่ยวกับเวลา 

  • TIMENOW() + 1 : บวกเพิ่ม 1 ชม. (a Number) to the current Time.
  • TIMENOW() + "003:03:00" : บวก 3 ชม.และ 3 นาที  (a Duration) to the current Time.
  • TIMENOW() - "003:03:00" : ลบ 3 ชม. และ 3 นาที  (a Duration) from the current Time.

 ตัวอย่างวันที่และเวลา 

  • NOW() + 1 : บวก 1 วัน  (a Number) to the current DateTime.
  • NOW() - 3 : ลบ 3 วัน (a Number) from the current DateTime.
  • [TargetDateTime] + "012:59:00" : เพิ่ม 12 ชม. และ 59 นาที  (a Duration) to a DateTime value.
  • [TargetDate] + ([TargetTime] - "00:00:00")  : สร้างค่า  DateTime value จากวันที่และเวลา  Date value and a Time value.

ตัวช่วงระยะเวลา 

  • TIMENOW() - "12:30:00" : จากเวลาปัจจุบัน ถึง 12:30 PM (a Time).
  • NOW() - "03:15:30" : เวลาปัจจุบัน และ  3:15:30 AM (a Time) on December 30, 1899 (the default Date if none is included).
  • TODAY() - "12/30/2001" : วันนี้ และ ธันวาคม 30, 2001 (a Date).
  • [EndDate] - [StartDate] : จากวันจบ และวันเริ่ม  StartDate (a Date) at midnight and EndDate (a Date) at midnight.
  • IF(([StopWhen] > [StartWhen]), ([StopWhen] - [StartWhen]), (([StopWhen] + 24) - [StartWhen])) : ช่วงเวลา StartWhen และ  StopWhen (two DateTime values). See also: IF().

ช่วงเวลาในวัน เดือน หรือปี 

  • HOUR(TODAY() - [TargetDate]) / 24 : จำนวนวัน ระหว่าง วันนี้ และวันที่อยู่ในเป้าหมาย .
  • FLOOR(((HOUR([EndDate] - [StartDate])) - (([Years] * 365.24 * 24.0) + ([Months] * 30.4 * 24.0))) / 24.0)  : จำนวนวัน ระหว่าง วันเริ่ม และวันจบ และ สมมุตคอลัมน์จำลอง ปี และเดือน จำนวนของปี และเดือน  the number of days between the start and end dates. It assumes virtual columns Years and Months contain the number of years and months, respectively, computed using the formulas above.
  • FLOOR(((HOUR([EndDate] - [StartDate])) - ([Years] * 365.25 * 24.0)) / (30.4 * 24.0)) : จำนวนเดือนระหว่าง วันเริ่มและวันจบ 
  • FLOOR((HOUR([EndDate] - [StartDate])) / (365.24 * 24.0)) : the number of years betweenจำนวนปีระหว่าง วันเริ่ม และวันจบ  See also: FLOOR().

 ต.ย.การเทียบวันที่ เวลา และวันเวลา 

  • (TODAY() - [When]) = 7: แบบYes/No ระบุว่า ใช่หรือ ไม่ใช่ ตามเงื่อนไขที่กำหนด ก่อน 7 วัน ไหม 
  • ([When] - TODAY()) = 7 : a Yes/No valueใช่ไม่ใช่ วันที่ หรือ วันเวลา 7 วันหลังวันที่กำหนดไหม  
  • AND([OrderDateTime] >= [StartDateTime], [OrderDateTime] <= [EndDateTime]) : ใช่ไม่ใช่ วันเวลา ตามห้วง วงเล็บ ที่กำหนด หรือไม่   See also: AND().
  • AND([OrderDate] >= [StartDate], [OrderDate] <= [EndDate]) : ใช่ไม่ใช่ ค่าวันที่ของ  OrderDate column อยู่ระหว่างค่าเริ่ม ค่าจบไหม StartDate and EndDate field values. See also: AND().
  • AND(([When] >= (TODAY() - 7)), ([When] <= TODAY())) : ใช่ไม่ใช่ วันที่ หรือวันเวลา ที่กำหนดไหม  ภายใน 7 วัน  See also: AND().
  • TODAY() > ([TargetWhen] + 1): ใช่ไม่ใช่ วันที่ วันที่และเวลา ตามที่กำหนดไหม มากกว่าวันที่ผ่านมาเปล่า 
  • [Timestamp] > (NOW() - 1): ใช่ไม่ใช่ เวลาที่บันทึก ตามเงื่อนไขที่ระบุเปล่า  
  • [OrderDateTime] >= (NOW() - "001:30:00")  ใช่ไม่ใช่วันที่เวลา ของ  OrderDateTime  ภายใน 1 และ  30นาที ของ วันที่เวลาปัจจุบัน 
  • IN(MINUTE([_THIS] - "00:00:00"), LIST(0, 15, 30, 45)) : ค่า ใช่/ไม่ใช่ เมื่อ นาที ของวันเวลา หรือ ค่าเวลา ของคอลัมน์ปัจจุบัน แบ่ง 4 ส่วน  (i.e., is 0, 15, 30, or 45). See also: IN(), LIST().


บันทึก 

วันที่จะถูกนำมาใช้เป็นค่าคงตัว ภายในเงื่อนไขภาษา จะต้องเป็นตัวแทนค่า MM/DD/YYYY 

อย่างไรก็ตาม ข้อมูลค่าที่แท้จริง ขึ้นอยู่กับระบบ วันที่เวลา และรูปแบบที่คอมพิวเตอร์ และมือถือ ของ Sheet Table ของผู้ใช้งาน อีกครั้ง 

วิธีเลือกมุมมองแอพ View Types

ในการออกแบบและพัฒนาแอพด้วย AppSheet เราสามารถเลือกมุมมอง View หรือรูปแบบหน้าตาของแอพในการนำเสนอข้อมูล เพื่อให้ตรงกับชนิดของข้อมูล Data ของเรา ได้ มาก 8 รูปแบบ ด้วยกัน คือ


  1. Deck
  2. Table
  3. Gallery
  4. Detail
  5. Map
  6. Chart
  7. Form
  8. Dashboard
 
เริ่มจาก Deck and Table นำข้อมูลจากตารางข้อมูลมาจัดเรียงในรูปแบบของหน้าจอ ที่ใช้การเลื่อนขึ้นและลงในการไล่เรียงดูข้อมูลตามแถวของข้อมูล

Table จะใช้แสดงข้อมูลในรูปแบบที่กระชับ ช่วยให้การเลื่อนดูข้อมูลปริมาณมากๆ สะดวก
Deck จะแสดงข้อมูลของแต่ละรายการข้อมูลในรูปของ การวาง การ์ด วางไพ่บนโต๊ะ เหมาะกับข้อมูลรูปภาพ ถ้าไม่มีไฟล์รูปภาพ แต่ยังต้องการเรียกใช้มุมมองแบบ Deck ควรจะเพิ่มคอลัมน์จำลอง ที่มีชนิดของข้อมูลเป็นรูปย่อ thumbnail โดยใส่สูตรในช่อง editor เป็น TEXT_ICON(INITIALS([Column_Of_Type_Name]))

นอกจากแสดงรูปภาพแล้ว Deck จะแสดงข้อมูลอีก 2 คอลัมน์ และปุ่มคำสั่งการทำงาน ด้านล่างหน้าจอ เช่น โทรศัพท์ หรือ email

** Deck มุมมอง จะสามารถเลือกมุมมองย่อย หรือมุมมองอีกชั้น เพื่อแสดงข้อมูลข้อมูล ที่เกี่ยวข้องหรือ สัมพันธ์กันกับข้อมูล แรก

ต้องเข้าใจการสร้างความสัมพันธ์ระหว่างตาราง ***

3 Gallery :
มุมมองนี้ เหมาะสำหรับการนำเสนอข้อมูลที่เป็นอัลบัมรูปภาพ พร้อมตัวเลือก แสดงภาพย่อ แตะภาพ เพื่อแสดงภาพขนาดใหญ่ขึ้น หรือเต็มหน้าจอ
ตัวเลือกขนาดภาพ
small เป็นภายย่อ
Medium แสดงภาพ คู่กัน สองแถว
Large แสดงภาพขนาดใหญ่ แนวตั้ง

4.Detail (previously Slideshow)

มุมมองนี้ สำหรับการนำเสนอข้อมูล ในรูปแบบ สไลด์ภาพ นำเสนอ ที่ต้องการเน้นภาพขนาดใหญ่ และปุ่มควบคุมการทำงาน บริเวณด้านล่างหน้าจอ
การแก้ไขอย่างรวดเร็ว
ช่วยให้การแก้ไขข้อมูลบางคอลัมน์ สามารถทำได้สะดวก รวดเร้ว และบางคอลัมน์ ก็จะแก้ไขไม่ได้ เช่น
Key หลัก ห้ามซ้ำ
คอลัมน์ Read only
คอลัมน์ที่เชื่อมโยงสูตรคำนวณ
คอลัมน์ระบบ เช่น จำนวนแถว
Change คอลัมน์ที่มีค่าไม่คงตัว
คอลัมน์ที่ไม่อนุญาตการแก้ไข
5. Map:
แสดงข้อมูลเกี่ยวข้องกับ ที่ตั้ง ตำแหน่งในรูปแบบแผนที่
6. Chart:
นำเสนอข้อมูลในรูปแบบแผนผัง กราฟ
การนำเสนอข้อมูลในรูปแบบแผนผัง ก็ไม่ค่อยง่ายเท่าไหร่

ค่าแกน X,Y ขนาดและความละเอียดในการพล็อต
รูปแบบกราฟ กราฟแท่ง วงกลม แผนผัง อื่นๆ
7. Form:
แอพสามารถบันทึก ลายเซ็นต์ รูปภาพ และตำแหน่ง
ถ้าเราต้องการเก็บข้อมูล ผู้ใช้งาน รูปแบบฟอร์ม นับว่า เหมาะสม

8. Dashboard:
สามารถแสดงมุมมองมากกว่า 1 แบบ ในหน้าจอ เช่น ปฏิทิน แผนที่ แผนผัง อัลบัมภาพ ตาราง และสไลด์โชว์


วิธีแสดงภาพในแอพ AppSheet

การแสดงรูปภาพในแอพ แบบ Step by step 
ขั้นตอนแรก ให้เราสร้างไฟล์ ดาต้า โดยไปที่ Drive และสร้าง Google Sheet ขึ้นมา 

ตารางข้อมูล ตัวอย่าง เป็นการเก็บข้อมูล ยานพาหนะ และแสดงรูปภาพ ยานพาหนะ 

ยกตัวอย่าง การแสดงภาพ โลโก้ ในแอพ 
ตำแหน่งที่ต้องการจะแสดง คือ top หรือส่วนหัว หรือ ส่วนบน 

ขนาดไฟล์ภาพที่ต้องการคือ 768 x 400px 

ใช้แอพแต่งรูป หรือแอพออกแบบโลโก้ช่วยในการแต่งภาพ  เตรียมไว้ใช้งาน 

จากนั้น upload ไฟล์รูปภาพไปที่โฟลเดอร์ drive ควรจะเป็นโฟลเดอร์รองในโฟลเดอร์หลักของดาต้า ตาราง 


2 วิธีในตาราง Google sheet 

1 คือ คัดลอก URL หรือที่อยู่ของไฟล์ภาพ มาใส่ในช่อง image 

หรือ 
2 ใช้การระบุชื่อไฟล์ 






วิธีแสดงรูปภาพและเอกสาร Images and Documents

การสร้างแอพ มักจะมีข้อมูลที่เป็นไฟล์รูปภาพ และไฟล์เอกสาร มาเกี่ยวข้อง บทความนี้ เรามาศึกษา ความรู้ และวิธีการ แสดงภาพ และไฟล์เอกสาร ในแอพ ที่พัฒนาด้วย Appsheet กัน 

การเก็บไฟล์ภาพ 

สามารถแสดงไฟล์ภาพ และ เอกสาร ในแอพ 
รูปภาพ จะต้องเก็บในคอลัมน์ รูปภาพ หรือ image ในตาราง นะ 
สำหรับไฟล์เอกสาร จะเก็บในคอลัมน์ File ชนิด รูปภาพ หรือ เอกสาร image or document อาจจะเป็นลิงค์ URL หรือชื่อไฟล์ 

ค่าของ URL 
เก็บ URL ลิงค์ ต้องมั่นใจว่า เข้าถึงได้ ไม่มีข้อห้าม หลายครั้ง คนพัฒนาเข้าถึงได้ แต่ผู้ใช้งานเข้าไม่ได้ 
เช่น ไฟล์ภาพ จาก Facebook เจ้าของจะเข้าถึงได้ ทุกกรณี แต่คนอื่นๆ ไม่ใช่ ดังนั้นต้องกำหนดค่า การเข้าถึง แบบ Public คือทุกคนเข้าถึงได้ 

ถ้าเป็นไฟล์รูปภาพที่เก็บบน Google drive ต้องเลือก ลิงค์ที่แชร์และเข้าถึงได้ทุกคน 

รูปภาพ จาก คอมพิวเตอร์ หรือ มือถือส่วนตัว appsheet จะเข้าไม่ถึง จำเป็นต้องมีการอัพโหลดไปแหล่งเก็บไฟล์ภาพออนไลน์ เช่น Google drive หรือ Onedrive เป็นต้น 

เก็บชื่อไฟล์ภาพหรือไฟล์เอกสาร 

## เก็บได้ เมื่อไฟล์ภาพ หรือเอกสารนั้น อยู่บนระบบ Cloud Server ที่ appsheet รู้จัก 

ใน Editor ของการพัฒนาแอพ จะมีปุ่ม Browse เพื่อเข้าไปเลือกไฟล์ภาพ หรือ เอกสาร ใน Cloud Server ของเรา 

ถ้ามีการระบุชื่อไฟล์ภาพ หรือไฟล์เอกสาร ในตารางดาต้า ไฟล์ ควรจะอยู่ในโฟลเดอร์ เดียวกันกับไฟล์ ดาต้า นั้น เช่น  ไฟล์ดาต้าที่  /appsheet/data/MyApp ถ้ามีรูปภาพ จะถูกเก็บไว้ที่ image MyImage.jpg ในโฟลเดอร์เดียวกัน

ไม่อยากเก็บไฟล์ภาพ ไฟล์ตามที่แอพกำหนด เลือกเองได้ โดยสามารถระบุ โฟลเดอร์ใหม่ เพื่อเก็บไฟล์ภาพตามที่เราต้องการได้

ตอบข้อสงสัย ผมด้วย ตนอแรก
กล้องมือถือ ถ่ายภาพ ชัดมาก ไฟล์ใหญ่มาก แต่เมื่อนำมาใช้งานกับ appsheet ระบบจะลดขนาดลงเหลือที่ 600px
ขนาดไฟล์ภาพแนะนำคือ 600 x 600 px

การเลือกสไตล์รูปภาพ
fill with crop จะเหมาะสำหรับรูปภาพส่วนบุคคล
Fit with scale นิยมใช้กับโลโก้ คือจะปรับพอดีส่วนบน
ส่วน Background จะใช้ภาพเป็นฉากหลัง

ในการเตรียมไฟล์ภาพสำหรับใช้งานกับ Fill mode นั้น ขนาดไฟล์ภาพต้นฉบับ แนะนำให้เตรียมมาขนาด 768 x 400 px

การแสดงภาพใน google sheet
จะต้องเพิ่ม คอลัมน์อีก 1 คอลัมน์ ขึ้นมา แล้วใช้สูตร ช่วยในการดึงภาพขึ้นมาแสดง

Format:

=CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("AppName-Account#"), "&tableName=", ENCODEURL("TableName"), "&fileName=", ENCODEURL(+ImageColumnCell)) 

ตัวอย่าง:

=CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("Inventory-114348"), "&tableName=", ENCODEURL("Orders"), "&fileName=", ENCODEURL(+B2))) 



การหาชื่อแอพ รวมทั้งที่อยู่ URL ไฟล์ภาพ ดูที่ช่องที่อยู่ของ editor

หาชื่อตาราง
ไปที่ Data >> Tables

การฝังรูปภาพ Previe ภาพลงในช่องคอลัมน์ google sheet

Format:

=IMAGE(CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("AppName-Account#"), "&tableName=", ENCODEURL"TableName"), "&fileName=", ENCODEURL(+ImageColumnCell))) 

ตัวอย่าง :

=IMAGE(CONCATENATE("https://www.appsheet.com/template/gettablefileurl?appName=", ENCODEURL("Inventory-114348"), "&tableName=", ENCODEURL("Orders"), "&fileName=", ENCODEURL(+B2))) 


ถ้าเราสร้างแอพ และมีการสร้างลิงค์ URL ไฟล์ แล้ว ลิงค์จะทำงาน ไม่นาน ยกเว้นเราจะไปยกเลิกการตั้งค่า การ รปภ. security option ให้เป็น no “Require Image and File URL Signing.”

ถ้าเราไม่ติ้กเลือก รายการนี้ แอพของเรา ก็จะมีความปลอดภัยน้อย ลง ผู้ใช้งาน อาจจะเข้ามา แก้ไขแอพ โดยไม่ตั้งใจ หรือ ตั้งใจได้ ก็ต้องพิจารณา ให้ดี

ถ้าไม่จำเป็น ก็ไม่ต้อง ติ้กออก นะ


การแสดงภาพใน SmartSheet

อีกหนึ่งบริการไฟล์ตารางออนไลน์ใน cloud เดาเอา ว่า คล้ายๆ กับ Google drive / google sheet

แต่จริงๆ แล้ว ก็แตกต่างกันบ้าง ในเรื่องของการจัดเก็บ และการให้แสดงผล

เอาจริงๆ ผมก็ยังไม่มี account ของ Smartsheet จึงขอละไปก่อน มีเวลาและโอกาส จะทดสอบและมาเล่าต่อ


Image Caching การเก็บไฟล์ภาพชั่วคราว



ระบบจะเก็บไฟล์ภาพชั่วคราวไว้ที่ Cloudflare เพราะถ้าเก็บโดยตรงที่ server ของ Appsheet จะมีราคาแพง และแพงมากขึ้น หากมีการปรับขนาดภาพและแสดงผล


ถ้าเรา ใช้ภาพซ้ำ ไฟล์ URL ของภาพนั้น จะอัพเดท และเราจะเห็นภาพอัพเดท ต่อเมื่อ ไฟล์ภาพนั้น ออกจาก ระบบภาพชั่วคราวของ Cloudflare


ถ้าเราเปิดค่า "Secure Image Access" ระบบจะไม่เก็บภาพในระบบชั่วคราวที่ Cloudflare และการแสดงผลภาพจะได้รับความยากลำบาก โดยเราสามารถเปิดใช้งาน "Secure Image Access" โดยไปที่ Security > Options



วิธีใช้งานข้อมูล คอลัมน์ Columns: The Essentials

เมื่อเรามีตารางข้อมูล จะต้องทำความเข้าใจและความความรู้จักกับ แถว และ คอลัมน์ กัน
Row แถว เรียงกันไปเป็นแถวๆ  คณิตเรื่องกราฟ คือ แกน X
Column แท่งแนวตั้งหรือแนวดิ่งไหม ถ้าคณิตเรื่องกราฟ คือ แกน Y 
Concept หรือแนวคิด เรื่องนี้ 
โครงสร้างของคอลัมน์ 
พิจารณาองค์รวมของตาราง แล้ว ตรวจสอบดูข้อมูลของแต่ละ คอลัมน์ ชนิด และคุณสมบัติ หรือ ภาษาในการพัฒนาแอพ เขาจะใช้ว่า type and properties 

ในแอพชีพ ตัวเขียนแอพ Editor 

พื้นฐานคอลัมน์ ชื่อของคอลัมน์ และชนิดของข้อมูล

แต่ละคอลัมน์ต้องมีชื่อ จะไทย หรือ อังกฤษ ก็ได้ โดย Appsheet จะเลือก type หรือชนิดของข้อมูล ตามชื่อของคอลัมน์ที่เรากำหนด เช่น 
รูปภาพ ก็จะได้ type เป็น image 
วันที่ ก็จะได้เป็น  DAte

เป็นต้น 

แน่นอนว่า เราสามารถเลือกชนิดข้อมูลของเราเองได้ หลักๆ ก็จะมี ตัวเลข ข้อความ เป็น วันที่ วันที่และเวลา  เป็นกล่องตัวเลือก หมายเลขโทรศัพท์ 

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

**การเปลี่ยนชื่อคอลัมน์ ถ้าไม่จำเป็นก็ไม่ควรทำอย่างยิ่ง เพราะว่า จะเกิดข้อผิดพลาดของการทำงานได้ 

ถ้ามีข้อผิดพลาดระหว่าง ตารางข้อมูล และมีข้อความแจ้งเตือนข้อผิดพลาด error เราก็จะต้อง ซิงค์ข้อมูลกันใหม่ ผ่านคำสั่ง Regenerte 

KEYS 
อาจจะเป็นคอลัมน์ที่เก็บข้อมูล รหัสประจำประชาชน 13 หลัก ซึ่งข้อมูลจะต้องไม่ซ้ำกัน   ส่วนชื่อ และนามสกุล อาจจะมีโอกาสซ้ำกัน จึงไม่นิยมใช้นำมาเป็น Keys 


ถ้าผู้ใช้งานเปลี่ยนแปลงดาต้าใดๆ ในแอพ หมายถึงพวกเขาแก้ไขเปลี่ยนแปลงข้อมูล ผ่านระบบจำลองข้อมูล บนอุปกรณ์มือถือของพวกเขา เรียกว่า data cached on device 
เมื่อ มีการซิงค์ข้อมูลกับ Cloud Server ก็จะอัพเดทข้อมูลให้ 

คุณสมบัติ 2 ชนิด Roles and Behaviors 

Role จะทำหน้าที่พิจารณาคอลัมน์ ส่วน Behavior จะทำหน้าที่พิจารณาว่าคอลัมน์จะทำอะไร 

มีคุณสมบัติหลายอย่าง  ที่เราสามารถเปลี่ยนแปลง ทั้ง Role และ Behavior 
คุณสมบัติ ต่างๆ ได้แก่ 

Descriptive คำอธิบายแถว 
INITIAL VALUE ค่าเริ่มต้น 

SEARCHABLE สืบค้นได้ 
SCANABLE สแกนได้
SENSITIVE DATA ข้อมูลสำคัญ 

การฝึก Practice
ให้คนอ่าน ลงชื่อใช้งาน appsheet 
ต้องมีบัญชี gmail หรือ hotmail แนะนำ gmail 

แล้วไป 2 ที่ในแอพ คือ 

เปลี่ยนคุณสมบัติของคอลัมน์ 
เรียนเพิ่มเติม สูตรใน appsheet 

การเปลี่ยนค่า Role ของคอลัมน์ 
Key  ห้ามมีข้อมูลซ้ำ เป็นข้อมูลสำคัญ 
Label   ป้ายกำกับ 
Read-only   อ่านได้เพียงอย่างเดียว 
Hidden   ซ่อน 
ReQuired   จำเป็น ห้ามเป็นค่าว่าง 
DisplayName  แสดงชื่อ 

การเปลี่ยนค่า Behavior ของคอลัมน์ 
กำหนดเงือนไขในการควบคุม การทำอะไรของคอลัมน์ เช่น จำนวนค่าต่ำสุด หรือ มากสุด มีผลเมื่อ หรือ ไม่มีผลเมื่อ จำเป็นเมื่อ หรือ แก้ไขได้ เมื่อ 


min and max length, as well as your Valid_If, Show_If, Required_If, and Editable_If constraints, in the "Edit this column definition" view

แท็บ Show All Properties คลิก เพื่อแสดง คุณสมบัติทั้งหมด
นอกจากนั้น ยังสามารถสร้าง คอลัมน์จำลอง Virtual column ขึ้นมาใช้งาน บางครั้งระบบ ก็จะสร้างคอลัมน์จำลองให้เอง เพื่อ ช่วยการทำงานของแอพ ให้เป็นไปตามวัตถุประสงค์ และความต้องการของผู้สร้าง

** ถ้ามีการแก้ไข เปลี่ยนแปลง คุณสมบัติต่างๆ จะต้อง update ไปที่ Source Table ต้นทางด้วยเสมอ โดยการคลิกที่ Regenerate