Category: Online Submission System

  • [บันทึกกันลืม] แก้ปัญหา server certificate verification failed บน gitlabs

    ปัญหาคือ: จะ git push จาก Linux/Ubuntu มาเก็บใน gitlabs ขององค์กร

    git push -u origin master

    แต่ติดปัญหาว่า

    fatal: unable to access 'https://gitlab.xxx.xxx.xxxx/userid/repo.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

    วิธีแก้ปัญหา (แบบรีบ ๆ)

    git config --global http.sslVerify false

    ก็จะใช้งานได้แล้ว

    *** เออ “ก็ง่าย ๆ” แต่ไม่มีบอกไว้ให้หาง่าย ๆ นิ ***

  • djsurvey – Google Forms Alternative #01

    ต่อจาก ddready – แพ็ครวม django + bootstrap4 + crispy form + docker พร้อมใช้งาน ในบทความนี้ ผมได้พยายามทำให้ใช้งาน Django ได้ง่ายขึ้น จนได้ แบบสำรวจอย่างง่าย พร้อมใช้งาน ใน 3 ขั้นตอน

    Prerequesite

    ติดตั้ง Python 3.6+ หรือ ใช้ Python Container แล้ว

    Repository

    https://github.com/nagarindkx/djsurvey

    ง่าย ๆ 3 ขั้นตอน

    1. Clone Repository

    ใช้คำสั่ง git

    git clone https://github.com/nagarindkx/djsurvey.git

    หรือ Download ไปก็ได้

    https://github.com/nagarindkx/djsurvey/archive/master.zip

    2. กำหนดข้อคำถามในแบบสำรวจ

    แก้ไขไฟล์

    /code/main/survey/models.py

    ตัวอย่างเช่น แบบสำรวจ ประกอบด้วย

    1. ชื่อ
    2. อีเมล
    3. เพศ
    4. วันเดือนปีเกิด
    5. ผลไม้ที่ชอบ
    6. ข้อเสนอแนะ

    ก็สร้าง Model ตามนี้ ( แรก ๆ อาจจะรู้สึกน่ากลัว แต่พอเข้าใจแล้ว มันง่ายมาก)

    from django.db import models
    class Survey(models.Model):
        fullname = models.CharField(
            verbose_name="ชื่อ",
            max_length=255,  blank=False)
        email = models.EmailField(
            verbose_name="อีเมล",
            blank=False)
        gender = models.CharField(
            verbose_name="เพศ",
            max_length=1,    blank=False,
            choices=[('F', 'หญิง'), ('M', 'ชาย')],
            default='F',
        )
        birthdate = models.DateField(
            verbose_name="วันเดือนปีเกิด",
            auto_now=False,  blank=False)
        fruit = models.CharField(
            verbose_name="ผลไม้ที่ท่านชอบ",
            max_length=1,    blank=False,
            choices=[('a', 'แอปเปิ้ล'), ('b', 'มะละกอ'),
                     ('c', 'กล้วย'), ('d', 'ส้ม')],
            default='c',
        )
        comment = models.TextField(
            verbose_name="ข้อเสนอแนะ",
            blank=True)

    แนะนำให้ใช้ Visual Studio Code จะทำงานได้ง่ายมาก

    3. Migrate แล้ว Run

    ใช้คำสั่งต่อไปนี้

    python manage.py migrate
    python manage.py runserver 0:8080

    ชมผลงาน

    http://localhost:8080/survey/

    หรือ ตกแต่งอีกนิดหน่อย ก็จะได้แบบนี้

    http://localhost:8080/advancedsurvey/

    สำหรับผู้ที่ใช้ Docker สามารถ ทำตามขั้นตอนใน แนวทางการพัฒนา Web Application ด้วย django จาก local docker สู่ Google Cloud Run เพื่อนำขึ้น Google Cloud Run ได้เลย (แต่ต้องเชื่อมกับ Database จริง ๆ ก่อนนะ – โปรดติดตามตอนต่อไป)

    คุณกำลังเจอปัญหาเหล่านี้อยู่ใช่ไม๊ ?

    • Google Forms ก็ง่ายดีแหล่ะ แต่ จะทำอย่างไรให้เก็บข้อมูลไว้ในฐานข้อมูลได้ ?
    • อยากให้ ผู้ใช้งาน Upload เอกสารเข้ามา / แก้ไขข้อมูล ซึ่ง Google Forms ก็ทำได้ แต่ต้อง Login ด้วย Google Account ก่อน จึงจะทำได้
    • Google Forms ก็ทำ Conditions ได้แหล่ะ (Go to section base on answer) แต่ ถ้าจะให้มีการคำนวนที่ซับซ้อนกว่านั้น ก่อนจะเลือกคำถามถัดไป จะทำอย่างไร ?

    ปัญหาเหล่านี้จะหมดไป เมื่อคุณใช้ Django !

    • ติดตั้งได้ บน Web Server ของคุณ!
    • Login ด้วย Facebook/Twitter/Google/Line หรือ Email หรือ จะเป็น Single Sign-On ก็ยังได้
    • ทุกอย่างสามารถ Customize ได้ ทำแบบสอบถามที่ซับซ้อนได้

    ไว้เจอกันในตอนต่อ ๆ ไปครับ

  • การใช้ GitHub Command Line #newbie

    Prerequisite

    • ต้องมี GitHub Account ก่อน ทำตามวิธีการนี้ https://help.github.com/articles/signing-up-for-a-new-github-account/
    • สร้าง GitHub Repository บน Web ก่อน  (ในที่นี้ จะสร้าง Repository ชื่อ mynewrepo) ซึ่งจะได้ URL มาเป็น https://github.com/your-username/mynewrepo.git

    สร้าง local repository

    mkdir mynewrepo
    cd mynewrepo
    git init
    git status

    สร้างไฟล์ใหม่

    # สมมุติสร้างไฟล์ใหม่
    echo "Hello World" > mynewfile.txt
    git add .
    git status

    ทำการ Commit

    git commit -m "This is a first Commit"

    สร้าง Connection ระหว่าง Local Folder กับ GitHub Repository

    git remote add origin https://github.com/your-username/mynewrepo.git
    git push -u origin master

    จากนั้น ใส่ Username/Password ของ GitHub Account

    ไปดูผลงานใน Repository “mynewrepo” ที่ https://github.com/your-username/mynewrepo

    เมื่อมีการแก้ไขไฟล์

    echo "Hello New World" >> mynewfile.txt
    git status

    ทำการ เพิ่ม > Commit > Push

    git add .
    git commit -m "This is a second Commit"
    git push -u origin master

    วนไป

     

  • วิธีใช้ Google Sites เพื่อแสดงรายงานผลการลงทะเบียนจาก Google Form

    ปัจจุบันการสร้างแบบฟอร์มการรับลงทะเบียนออนไลน์สามารถทำได้ง่ายๆโดยใช้ Google Form โดยวันนี้มีโจทย์ว่า ต้องการรับลงทะเบียนผู้ที่จะร่วมเดินทาง กำหนดว่า ต้องการเดินทางกับรถบัสหมายเลขใด (มี 3 คัน) และต้องการแสดงผลทันทีว่า แต่ละคันมีจำนวนคนเท่าไหร่แล้ว และ ใครบ้างที่เดินทางไปในรถบัสคันนั้น

    วิธีการคือ

    1. สร้าง Google Form เพื่อทำระบบรับลงทะเบียนตามปรกติ
      2559-11-03-10_08_062559-11-03-10_08_22-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%a5%e0%b8%b0%e0%b9%80%e0%b8%ad%e0%b8%b5%e0%b8%a2%e0%b8%94%e0%b8%9c%e0%b8%b9%e0%b9%89%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%87%e0%b8%84%e0%b9%8c
      2559-11-03-10_08_37-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%a5%e0%b8%b0%e0%b9%80%e0%b8%ad%e0%b8%b5%e0%b8%a2%e0%b8%94%e0%b8%9c%e0%b8%b9%e0%b9%89%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%87%e0%b8%84%e0%b9%8c
      2559-11-03-10_08_37-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%a5%e0%b8%b0%e0%b9%80%e0%b8%ad%e0%b8%b5%e0%b8%a2%e0%b8%94%e0%b8%9c%e0%b8%b9%e0%b9%89%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%87%e0%b8%84%e0%b9%8c
    2. ในส่วนของการสร้างแบบฟอร์ม ให้คลิกที่ RESPONSES แล้วคลิกที่รูป สี่เหลี่ยมสีเขียว (Google Sheets) 
      2559-11-03-14_21_05
    3. แล้วจัดรูปแบบให้เรียบร้อย เช่นต้องการจะซ่อน Column ใดบ้าง (จะใส่สี ก็ได้นะ)
      เสร็จแล้ว คลิกที่ปุ่ม Share
      2559-11-03-14_25_27
    4. กำหนดให้ Anyone with Link “Can View” แล้วคลิก Done
      2559-11-03-14_30_28
    5. สร้าง Google Sites และสร้างโครงสร้าง Page ต่างๆตามต้องการ
      2559-11-03-10_10_02-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-condolence
    6. ในตัวอย่างนี้ จะสร้าง Page “รายชื่อ” เพื่อไว้ใช้แสดงผลการลงทะเบียน ว่า รถหมายเลขใด มีจำนวนกี่คนแล้ว และใครบ้าง
      ให้เลือก Insert > More gadgets
      แล้วคลิกที่ Public > Include gadget (Iframe)
      2559-11-03-14_39_23-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-condolence 2559-11-03-14_39_45-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-condolence 2559-11-03-14_39_55-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-condolence
    7. จากนั้น มาใส่ URL กัน
      2559-11-03-14_40_09-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-condolence
    8. ใส่ URL ตามนี้https://spreadsheets.google.com/tq?tqx=out:html&tq=select  L,count(B) group by L  label count(B) ‘จำนวน’&key=XXXXXXXXXXXXXXXXXX

      เพื่อให้แสดงผลว่า รถบัสหมายเลขใด มีจำนวนคนเท่าไหร่
      โดยที่ tq เป็น Query เขียนว่า select L, count(B) group by L label count(B) ‘จำนวน’
      คือการแสดงคอลัมน์ L และ นับจำนวนโดยการ count โดยจัดกลุ่มตามคอลัมน์ L
      นอกจากนั้นยัง label คอลัมน์ count(B) เป็นคำว่า “จำนวน”2559-11-03-15_44_37-%e0%b9%82%e0%b8%84%e0%b8%a3%e0%b8%87%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%96%e0%b8%a7%e0%b8%b2%e0%b8%a2%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b8%ad%e0%b8%b2%e0%b8%a5%e0%b8%b1%e0%b8%a2

      ผลที่ได้คือ
      2559-11-03-15_48_55-search

      และ key=XXXXXXXXXXX นั้น ให้เอาค่าจาก

      2559-11-03-15_51_51

    9. ต่อไปให้แสดงผลรายชื่อทั้งหมด โดยสามารถแยกรายชื่อแต่ละคัน โดย
      Insert > Drive > Spreadsheet
      2559-11-03-15_50_46-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-condolenceแล้วเลือก Google Sheet ที่ต้องการ
      2559-11-03-15_57_14-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-condolence
    10. เมื่อดำเนินการเสร็จแล้ว ระบบก็จะสามารถแสดงผลการลงทะเบียนได้อัตโนมัติ
      2559-11-03-16_01_15-program-manager

     

  • สร้าง Form ลงทะเบียนออนไลน์ด้วย Google Form (รูปแบบใหม่) ให้ตอบรับผ่านทางอีเมลโดยอัตโนมัติ พร้อมปิด Form อัตโนมัติเมื่อครบเต็มจำนวน

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

    ดังนั้นเรามาดูวิธีการสร้าง Google Form แบบใหม่กันดีกว่าว่าเป็นอย่างไร ซึ่งต้องขอบอกว่า “มันง่ายมากๆ”


    1. คลิก Google Forms  เพื่อสร้างแบบฟอร์มลงทะเบียนออนไลน์

    Screen Shot 2559-07-23 at 3.34.20 PM
    Screen Shot 2559-07-23 at 3.38.37 PM

    2. ใส่รายละเอียด ข้อมูล รูปแบบ ในแบบลงทะเบียนตามที่ต้องการ
    (รูปแบบใหม่สามารถใส่ภาพที่เราออกแบบไว้ได้แล้วนะครับ โปสเตอร์ แบนเนอร์ ต่างๆ)

    Screen Shot 2559-07-23 at 3.43.21 PM

    + เราสามารถแบ่ง Form ของเราออกแบบเป็นหลายๆ section ได้นะครับ กรณีที่มีข้อมูลให้ต้องกรอกจำนวนมาก

    Screen Shot 2559-07-23 at 3.44.34 PM

    3. ติดตั้ง Add ons…

    Add ons ที่ผมจะติดตั้งนั้น มีด้วยกัน 2 อย่าง ดังนี้

    A. Form Confirmation Emails  คือ ระบบตอบรับการลงทะเบียนผ่านทางอีเมลอัตโนมัติ เมื่อผู้ใช้ลงทะเบียนผ่านฟอร์มเรียบร้อยแล้ว ระบบจะส่งเมลตามที่เราตั้งค่าไว้ไปให้ทางอีเมลที่ระบุไว้

    B. FormLimiter  คือ การปิดแบบฟอร์มลงทะเบียนอัตโนมัติ เมื่อมีผู้ใช้ลงทะเบียนครบตามจำนวนที่กำหนดไว้

    Screen Shot 2559-07-23 at 2.52.19 PM
    Screen Shot 2559-07-23 at 2.54.35 PM
    Screen Shot 2559-07-23 at 2.55.28 PM
    Screen Shot 2559-07-23 at 2.56.03 PM
    Screen Shot 2559-07-23 at 2.56.23 PM

    เมื่อติดตั้งเสร็จเรียบร้อยจะมี icons เพิ่มขึ้นมา ดังภาพ

    Screen Shot 2559-07-23 at 2.59.47 PM

    4. กำหนดรูปแบบการส่งเมลตอบรับอัตโนมัติ

    แบบฟอร์มตัวอย่างที่นำเสนอนั้น มีช่องให้ใส่ข้อมูล 3 อย่าง ดังภาพ

    (แนะนำให้ตั้งชื่อ Field ให้เป็นภาษาอังกฤษครับผม)

    Screen Shot 2559-07-23 at 4.20.18 PM

    เริ่มต้นตั้งค่า
    คลิกเลือก Form Confirmation Emails > Configure confirmations

    Screen Shot 2559-07-23 at 3.01.38 PM
    จากนั้นจะมีกล่องขึ้นมาให้มุมล่างขวา เพื่อให้กำหนดค่าต่างๆ

    Collage_Fotor

    คลิกเลือก Send Confirmations  กำหนดชื่อผู้ส่ง และรูปแบบการส่งเป็น E-mail <คลิก Continue>

    Email subject กำหนดชื่อหัวข้อของเมลที่ต้องการส่ง

    Email body เป็นการกำหนดรูปแบบของข้อมูลที่จะส่งไป ซึ่งจะอยู่ในรูปแบบของ HTML
    (สามารถดูตัวอย่างจาก Code ด้างล่าง) ถ้าใครมีรูปแบบอื่นก็สามารถทำได้ครับ ผมทำแบบง่ายๆ

    เมื่อกำหนดรูปแบบเสร็จเรียบร้อยแล้ว กดปุ่ม Save เป็นอันเสร็จสิ้น

    <html>
      <head>
      <meta charset="UTF-8">
      <title>TELL ME MORE PSU</title>
      </head>
     <body>
      <p>เรียนคุณ: ${"Name-Surname"}</p>
      <p> <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ตามที่ท่านได้สมัครเข้าร่วมอบรม หลักสูตร TOEIC (เตรียมความพร้อมการสอบ)<br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0004"><strong>กลุ่มที่ 2  หลักสูตร TOEIC นักศึกษาระดับปริญญาตรี และระดับบัณฑิตศึกษา<br>
      </strong></span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ณ ห้องอบรม 1 ชั้น 8  อาคารศูนย์ทรัพยากรการเรียนรู้ (LRC1)</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0004"><strong>เริ่มเรียน : 13 กรกฎาคม - 4 สิงหาคม 2559 (เวลา 13.30 - 15.30 น.)</strong></span><br><br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0099FF">เพื่อเป็นการยืนยันสิทธิ์เข้ารับการอบรม<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;กรุณาตอบกลับผ่านทาง E-mail :</span> tmmpsu@gmail.com</a> ด้วยค่ะ<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ภายในวันที่ 11 กรกฎาคม 2559 หรือจนกว่าครบตามจำนวนที่กำหนด) รับจำนวน 25 คนเท่านั้น <br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: #FF0004">ขอสงวนสิทธิ์ให้กับผู้ที่ได้ยืนยันสิทธิ์ในการเข้าอบรมผ่านทางอีเมลก่อน</strong><br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0004"><strong>ติดตามการประกาศรายชื่อผู้มีสิทธิ์เข้าร่วมอบรมโครงการอีกครั้งได้ที่: </strong></span><a href="http://clpd.psu.ac.th/" target="_blank">http://clpd.psu.ac.th/</a><br>
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;หากมีข้อสงสัยใดๆ สามารถสอบถามเพิ่มเติมได้ที่ หมายเลขโทรศัพท์ 0-7428-9207<br>
      <br>
      <br>
      ขอบคุณสำหรับการเข้าร่วมโครงการค่ะ<br>
      <br>
      ศูนย์ส่งเสริมและพัฒนาการเรียนรู้ มหาวิทยาลัยสงขลานครินทร์<br>
      โทรศัพท์ : 0-7428-9207<br>
      E-mail : <a href="mailto:clpdpsu@gmail.com" target="_blank">tmmpsu@gmail.com</a></p>
      </body>
      </html>

    ภาพตัวอย่างจากการส่งเมล

    Screen Shot 2559-07-23 at 3.26.02 PM

    จากนั้นให้ทำการทดสอบการใช้งานดูว่า มันสามารถส่งเมลได้จริงหรือไม่ด้วยนะครับ

    “ก่อนการใช้งานจริงทุกครั้ง”


    5. วิธีการปิดแบบฟอร์มออนไลน์อัตโนมัติ เมื่อครบเต็มจำนวน

    เหมาะสำหรับการลงทะเบียนจำนวนไม่มาก (ไม่เกิน 100 คน) และป้องกันการลงทะเบียนเกินจำนวนที่กำหนดไว้

    ซึ่งจริงๆ แล้วระบบอีเมลของ Google นั้นระบุเงื่อนไขในการส่งเมลออกใน 1 วันไว้ไม่เกิน 100 ฉบับ ดังนั้น ถ้ามีผู้ใช้มาลงทะเบียนผ่านแบบฟอร์มจำนวนมาก ๆ ก็จะถูกปิดระบบการส่งเมลออกไปโดยทันที่เนื่องจากเกินจำนวนที่ได้กำหนดไว้นั่นเอง

    เริ่มต้นไปที่ หน้า Google Form ของเราที่ได้สร้างไว้ คลิกแท็บ RESPONSES จากนั้นคลิกปุ่ม สีเขียว ดังภาพ

    Screen Shot 2559-07-23 at 4.46.46 PM

    แล้วทำการตั้งชื่อ Form (แนะนำว่าให้ตั้งชื่อให้เหมือนกัน แล้ววงเล็บไว้ว่า “Responses” ก็ได้ครับ)

    จากนั้นกดปุ่ม CREATE

    Screen Shot 2559-07-23 at 4.47.18 PM

    จากนั้นกำหนดชื่อคอลัมภ์ ให้เรียงลำดับตรงกันกับ Google Form ที่เราได้สร้างไว้ตอนแรก

    เพื่อที่เวลาบันทึกข้อมูลจะได้ไม่สับสน (ให้ใช้ชื่อที่เป็นภาษาอังกฤษเหมือนกันมาตั้งครับ)

    Screen Shot 2559-07-23 at 3.17.54 PM

    ภาพ Google Form

    Screen Shot 2559-07-23 at 4.20.18 PM

    ขั้นตอนต่อไป ให้สร้าง Sheet2 ขึ้นมาตรงแท็บด้านล่างครับ

    ชื่อของ Sheet อันแรก ให้กำหนดเป็น Form responses นะครับ ตามภาพ

    จากนั้นให้ใส่ Code ลงไปในช่อง A1 ดังนี้

    =COUNTUNIQUE('Form responses'!$B$2:$B$100)

    เป็นการกำหนดให้นับจำนวนในคอลัมภ์ B ของSheet Form responses
    ที่เป็นคอลัมภ์ B เพราะเป็นข้อมูล “ชื่อ-นามสกุล” ดังนั้น ถ้าลงทะเบียนซ้ำมาหลายๆ ครั้ง ก็จะนับแค่ 1 ครับ

    Screen Shot 2559-07-23 at 3.17.05 PM

    ตัวอย่างการนับจำนวน กรณีที่มีการลงทะเบียนแล้ว

    Screen Shot 2559-07-23 at 3.24.13 PM

    Screen Shot 2559-07-23 at 3.24.32 PM

    จากนั้นมากำหนดค่าใน FormLimiter ต่อครับ ในหน้าแรกของ Google Form
    คลิกเลือก FormLimiter > Set limit

    Screen Shot 2559-07-23 at 2.59.47 PM
    Screen Shot 2559-07-23 at 3.13.08 PM

    คลิกเลือก destination spreadsheet cell value

    (หัวข้อนี้จะไม่ปรากฎให้เห็นถ้าหากว่ายังไม่ได้สร้าง Sheet2 ขึ้นมาทีครับ)

    Screen Shot 2559-07-23 at 3.13.23 PM

    ให้ใส่ Sheet2!A1 ลงในช่องดังภาพ ตามcode ที่เราได้ระบบไว้เบื้องต้น

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

    จากนั้นกดปุ่ม Save and enable เป็นอันเสร็จสิ้น

    Screen Shot 2559-07-23 at 3.14.25 PM

    หมายเหตุ อย่าลืมทดสอบก่อนใช้งานจริงนะครับ

    เมื่อสร้างไฟล์ได้สักครั้งแล้ว เราสามารถ Copy ของเก่ามาแก้ไขได้นะครับ

    Screen Shot 2559-07-23 at 5.20.44 PM

    เมื่อสร้างไฟล์ทุกครั้ง จะมีด้วยกัน 2 ไฟล์ ดังภาพ

    ดังนั้นเวลา Copy ไฟล์ เพื่อสร้างแบบฟอร์มใหม่ ให้เลือก Copy เฉพาะ Google Form (สีม่วง) เท่านั้น

    แล้ว Google Sheets จะถูกสร้างขึ้นมาเองครับ

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

  • สร้างแบบฟอร์มลงทะเบียนออนไลน์ด้วย Google Form ให้ปิดการลงทะเบียนแบบอัตโนมัติเมื่อครบตามจำนวนที่ต้องการ

    อีกหนึ่งปัญหาของการใช้งาน Google Form เพื่อสร้างแบบฟอร์มลงทะเบียนออนไลน์ ที่ผมได้เจอมากับตัวเองคือ ไม่สามารถจำกัดจำนวนผู้ที่มาลงทะเบียนแบบออนไลน์ได้ ทั้ง ๆ ที่การจัดอบรม/สัมมนาต่าง ๆ เราประกาศว่า “รับจำนวนจำกัด” จึงเป็นที่มาของการหาคำตอบในครั้งนี้ครับ ว่า…

    “ทำอย่างไร ให้แบบฟอร์มลงทะเบียนออนไลน์ (Google Form)
    สามารถปิดการลงทะเบียนได้
    เมื่อมีผู้สมัครครบตามจำนวนที่ต้องการ ?”


    ** หมายเหตุ **

    การใช้ Script : formLimiter v.1.0.2 นี้ จะสามารถใช้ได้กับ Google Spreadsheets “เวอร์ชั่นเก่า” เท่านั้นครับ เวอร์ชั่นปัจจุบัน ไม่สามารถใช้งานได้ เนื่องจาก Google ได้มีการเปลี่ยนแปลงการใช้งานของ Script ใหม่จาก Script Gallery ไปเป็น Add-ons ครับ

    Script Gallery ==> Add-ons

    ซึ่ง formLimitter นั้น ผู้พัฒนายังไม่ได้พัฒนาเข้าไปอยู่ใน Add-ons  จึงทำให้หลาย ๆ ท่าน ที่สร้าง Google Spreadsheets ด้วยเวอร์ชั่นปัจจุบัน ไม่สามารถใช้งาน Script อันนี้ได้ครับ

    ดังนั้น หากผู้ใช้งาน ต้องการใช้ Script ดังกล่าว แนะนำว่าให้สร้าง Google Spreadsheets ด้วยเวอร์ชั่นเก่า นะครับ สามารถเข้าไปสร้างผ่านลิงค์ด้านล่างนี้ได้เลยครับผม

    goo.gl/pprjA5

    1. ไปที่มุมมองของ View responses
    googleform_004googleform_005

    จากนั้น คลิกเมนู Tools > เลือก Script gallery…
    googleform_023
    แล้วค้นหา Script ที่ชื่อว่า “formLimiter” ในช่อง Search แล้วคลิกปุ่ม Search
    เมื่อปรากฎ  “formLimiter v.1.0.2” ให้ดำเนินการติดตั้ง โดยคลิกปุ่ม Installgoogleform_024

    คลิกปุ่ม Continue > ปุ่ม Accept > และปุ่ม Close เป็นอันเสร็จเรียบร้อย
    googleform_025
    googleform_026
    googleform_027

    2. จะเห็นว่ามีเมนูที่ชื่อว่า formLimiter ปรากฎเพิ่มขึ้นมาใหม่
    จากนั้นให้ คลิกเมนู formLimiter > เลือก Run initial configuration เพื่อเปิดการใช้งาน Script
    googleform_028

    เมื่อเปิดการใช้งานเรียบร้อย เมนูย่อยจะเปลี่ยนไปดังภาพด้านล่าง ให้ คลิกเลือก Settings
    googleform_029

    3. ในส่วนนี้จะเป็นการกำหนดเงื่อนไขของการ “ปิดแบบฟอร์มการลงทะเบียนออนไลน์”
    ซึ่งจะมีด้วยกัน 3 เงื่อนไขให้เลือกใช้ ดังนี้
    googleform_033

     3.1  date and time – ใช้ในกรณีที่กำหนดให้ปิดการลงทะเบียนเป็นช่วงของเวลา โดยไม่จำกัดจำนวนผู้สมัคร
    googleform_030

    3.2  max number of form response – ใช้ในกรณีที่ต้องการรับผู้สมัครแบบจำกัดจำนวน
    googleform_031

    3.3  spreadsheet cell value – ใช้ตรวจสอบเงื่อนไขตามค่าของข้อมูลใน cell
    จะปิดการลงทะเบียนเมื่อข้อมูลใน cell ตรงกับค่าที่ได้กำหนดไว้
    googleform_032

    ในส่วนนี้ผมขอให้เลือกเป็น spreadsheet cell value นะครับ
    โดยให้กำหนดเงื่อนไขในลักษณะดังนี้

    ช่องแรก ให้ระบุ Cell ที่ใช้เป็น “Sheet2!A1” และ
    ช่องสอง ให้ระบุจำนวนที่ต้องการรับลงทะเบียน (ในที่นี้ผมกำหนดรับที่ 50 คน)
    googleform_043

    แนะนำว่า ให้นำเครื่องหมายถูกออก เนื่องจากระบบจะทำการส่งเมลทุกครั้งที่มีการลงทะเบียน
    อาจทำให้เกิดอีเมลขยะจากการแจ้งเตือนเป็นจำนวนมากได้ (กรณีที่รับผู้สมัครจำนวนมาก)

    จากนั้น คลิกปุ่ม Save settings เป็นอันเสร็จสิ้น
    googleform_044

    4. ขณะนี้เรายังอยู่ในหน้าของ View response
    ให้ทำการสร้าง “Sheet2” เพิ่มขึ้นอีกหนึ่ง เพื่อใช้ในการนับจำนวนผู้สมัคร (ดังภาพ)
    โดยให้กำหนดเงื่อนไขใน Cell A1 ดังนี้  =COUNTUNIQUE('Form Responses'!B2:B1000)

    ในส่วนนี้จะเป็นการแก้ปัญหา กรณีที่ผู้สมัครลงทะเบียนซ้ำหลาย ๆ ครั้ง (ซึ่งมีอยู่บ่อยครั้ง)
    เงื่อนไขนี้จะทำการนับจำนวนจากชื่อ-นามสกุลของผู้สมัคร หากซ้ำกันจะนับเป็น 1 คน
    (*ยกเว้นในกรณีที่ผู้ลงทะเบียน พิมพ์ชื่อ-นามสกุลในแต่ละครั้ง ไม่เหมือนกัน)
    เมื่อครบตามจำนวนที่กำหนดไว้ ระบบจะทำการปิดแบบฟอร์มลงทะเบียนโดยอัตโนมัติ

    googleform_045

    5. จากนั้นให้กลับมาที่มุมมองของ Edit questions ซึ่งเป็นหน้าเริ่มต้นของการสร้างแบบฟอร์ม
    googleform_016

    คลิกที่เมนู Response > เลือก Accepting responses
    googleform_021

    จากนั้นจะปรากฎ กล่อง This form has been turned off. ขึ้นมาให้
    ซึ่งกล่องนี้จะปรากฎขึ้น เมื่อมีผู้สมัครลงทะเบียนครบตามจำนวนที่ได้กำหนดไว้
    ดังนั้น ให้กำหนดข้อความแสดงการ “ปิดรับการลงทะเบียน” เพื่อแจ้งให้ผู้สนใจได้รับทราบ
    ดังตัวอย่างข้อความในภาพ
    googleform_039

    เมื่อกำหนดข้อความดังกล่าวเสร็จเรียบร้อยแล้ว
    ให้กลับไปคลิกที่เมนู Response > เลือก Accepting responses อีกครั้ง
    เพื่อปิดกล่องดังกล่าว (หากไม่ปิด หน้าแบบฟอร์มลงทะเบียนจะมีลักษณะดังภาพด้านล่าง)
    และทำให้ผู้สมัคร ไม่สามารถลงทะเบียนออนไลน์ได้

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

  • สร้างแบบฟอร์มลงทะเบียนออนไลน์ด้วย Google Form ให้ตอบรับผ่านทางอีเมลโดยอัตโนมัติ

    เนื่องจากว่ามีผู้สอบถามถึงการใช้งานแบบฟอร์มลงทะเบียนออนไลน์ แบบให้สามารถตอบรับผ่านทางอีเมลโดยอัตโนมัติไปยังผู้สมัครเมื่อเข้ามาลงทะเบียน ผมเห็นว่าน่าจะมีประโยชน์สำหรับ Admin หรือผู้ใช้งาน Google Form หลาย ๆ ท่าน จึงได้สรุปเป็นขั้นตอน ตามที่ผมได้ทำมา หวังว่าจะเป็นประโยชน์ให้กับทุก ๆ ท่านนะครับ


    ** หมายเหตุ **

    เนื่องจาก Google ได้มีการเปลี่ยนแปลงการใช้งานของ Script ใหม่
    จาก Script Gallery ไปเป็น Add-ons ครับ

    Script Gallery ==> Add-ons

    ซึ่งบทความที่ผมเขียนขึ้นนี้ ขออ้างอิงเมนูและการใช้งาน Google Spreadsheets เวอร์ชั่นเก่านะครับ
    ดังนั้น หากผู้ใช้งาน ต้องการใช้งาน Google Spreadsheets เวอร์ชั่นเก่า สามารถเข้าไปสร้างผ่านลิงค์ด้านล่างนี้ได้เลยครับผม

    goo.gl/pprjA5

    1. คลิก Form  เพื่อสร้างแบบฟอร์มลงทะเบียนออนไลน์

    googleform_001googleform_002

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

    3. คลิก View response เข้าสู่มุมมองของ View responses เพื่อกำหนดต่าง ๆ

    4. คลิกเมนู Tools > เลือก Script manager… (เป็นส่วนจัดการ Script ต่าง ๆ)
    จากนั้น คลิกปุ่ม New เพื่อสร้าง Script สำหรับการส่งอีเมลแบบอัตโนมัติ
    googleform_006googleform_007

    ตั้งชื่อไฟล์ Script ใหม่ โดยใช้ชื่อว่า “sendEmail”
    googleform_009-2

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

    function sendEmail(e) {
     var userEmail = e.values[4];
     var firstName = e.values[1];
     var trainingTitle = "อบรมการใช้โปรแกรม Smart Notebook sympodium & Smart board สำหรับการจัดการเรียนการสอนทางไกล";
     var infoLink = "http://clpd.psu.ac.th/clpd_2012";
     var emailAdd = "clpdpsu@psu.ac.th";
     var subject = "ศูนย์ส่งเสริมและพัฒนาการเรียนรู้ ม.อ. : ตอบรับเข้าร่วมอบรมโครงการเชิงปฏิบัติการ"
     var emailBody = "เรียนคุณ: "+firstName+"\n\n ท่านได้ทำการลงทะเบียนเข้าร่วมโครงการ"+
     "หัวข้อ \"" + trainingTitle + "\""+
     " ในวันพุธที่ 16 กรกฎาคม 2557 เวลา 09.00-16.00 น."+
     " ณ ห้องอบรม ชั้น 8 อาคารศูนย์ทรัพยากรการเรียนรู้ อาคาร 1 มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตหาดใหญ่"+
     "\n ทางศูนย์ส่งเสริมและพัฒนาการเรียนรู้ มหาวิทยาลัยสงขลานครินทร์ ตอบรับการเข้าร่วมโครงการดังกล่าวแล้วค่ะ"+
     "\n"+
     "\n ติดตามการประกาศรายชื่อผู้มีสิทธิ์เข้าร่วมอบรมโครงการอีกครั้งได้ที่: " + infoLink + 
     "\n"+
     "\n"+
     "\nขอบคุณสำหรับการลงทะเบียนเข้าร่วมโครงการค่ะ"+
     "\n"+
     "\nศูนย์ส่งเสริมและพัฒนาการเรียนรู้ มหาวิทยาลัยสงขลานครินทร์"+
     "\nโทรศัพท์ : 074-289203-4"+
     "\nE-mail : " + emailAdd;
     MailApp.sendEmail(userEmail , subject, emailBody); 
    }

    หมายเหตุ
    อักษรสีแดง คือ ข้อความที่สามารถแก้ไขได้
    อักษรสีฟ้า คือ ชื่อตัวแปร ที่ใช้สำหรับเก็บค่าต่าง ๆ ที่กำหนดไว้
    * สามารถปรับแก้ไข Script ได้ตามข้อมูลของแบบฟอร์มที่ได้สร้างขึ้น
    ซึ่ง Script นี้ อ้างอิงตามแบบฟอร์มลงทะเบียนในข้อที่ 2

    5. เมื่อกำหนดรายละเอียดข้อมูลการตอบรับ (Script) เสร็จเรียบร้อยแล้ว
    จากนั้น คลิกเมนู Resources > เลือก Current Project’s triggers
    googleform_010

    และคลิก No triggers setup. Click here to add one now.
    googleform_011

    เลือก On form submit แล้วคลิกปุ่ม Save / ปุ่ม Continue และ ปุ่ม Accept
    เป็นอันเสร็จสิ้นการสร้าง Script สำหรับการตอบรับอีเมลแบบอัตโนมัติ
    googleform_012
    googleform_013
    googleform_014

    คลิกปุ่ม Close (หากต้องการแก้ไข Script ให้คลิกปุ่ม Edit… ด้านบน)
    googleform_015

    6. ทดสอบการตอบรับการลงทะเบียน
    ว่า Script ที่สร้างไว้ มีข้อมูลที่ถูกต้องและสามารถตอบรับทางอีเมลแบบอัตโนมัติได้

    ไปที่มุมมอง View live form เพื่อทดสอบการลงทะเบียนจริง
    googleform_040
    googleform_017

    จากนั้นให้ตรวจสอบดูในมุมมอง View responses ว่ามีข้อมูลปรากฎให้เห็นหรือไม่
    และตรวจสอบอีเมลที่ได้ระบุไว้ ว่ามีการตอบรับจากระบบหรือไม่
    googleform_019
    googleform_020

    หมายเหตุ  หากพบว่าไม่มีการส่งอีเมลโดยอัตโนมัติจากระบบ อาจต้องทำการตรวจสอบ Script ใหม่อีกครั้ง เพื่อตรวจหาข้อผิดพลาด