Nhận email khi có người gửi Google Form

Như ở bài trước mình đã có bài viết hướng dẫn các bạn thủ thuật tạo form liên hệ với Google Form trên Google Drive, biểu mẫu khá nhiều tính năng hấp dẫn. Ở bài viết đó do nội dung đã quá dài nên mình tạm dừng lại tới phần hướng dẫn này, nhận email khi có người điền và gửi form đó", để viết riêng một bài viết hướng dẫn như ở đây. Việc nhận email không đơn giản chỉ là thông báo rằng có người gửi email đâu nhé, mà nó còn đưa đầy đủ thông tin những gì người dùng điền trên form đó.

Nhận email khi có người gửi Google Form

Việc này thì giúp các bạn không phải mất thời gian tự mình vào Google SpreadSheets như mình nói ở bài trước để đọc toàn bộ những thôn tin đó. Không dài dòng nữa chúng ta bắt tay vào việc thôi. Đầu tiên các bạn truy cập vào Google Drive và vào cái nơi (folder chung hoặc riêng gì đó) mà bạn đã tạo biểu mẫu mà mình đã hướng dẫn. Tại đây bạn sẽ thấy 2 file, một là "form" mà bạn đã tạo, và cái thứ hai là "SpreadSheets" chứa những thông tin mà khách truy cập điền vào.

Thông thường thì tên của 2 file này tương tự nhau, ví dụ tên của form là "Biểu mẫu liên hệ" thì tên của SpreadSheets là "Biểu mẫu liên hệ (Câu trả lời)" mà nhiều khi nó khác nhé, mà bạn yên tâm gửi thử ở form rồi vào check hoặc là nhanh ngó ngay cái thời gian chúng được tạo có giống nhau không là biết có phải nó hay không thôi. Bạn có thể tự mình đổi tên 2 file này hoàn toàn không sao cả.

Google Form và SpreadSheets

Sau khi tìm được 2 file này thì các bạn click chọn vào file "SpreadSheets" tức là file "Câu trả lời", và file này được mở ra với giao diện y chang Excel.

Tạo script cho SpreadSheets

Tại thanh điều hướng bên trong giao diện mới được mở ra, bạn truy cập vào "Công cụ » Trình chỉnh sửa tệp lệnh".

Trình chỉnh sửa tệp lệnh

Tiếp tục lại một tab mới lại được mở ra với một giao diện khác nữa, nếu là lần đầu tiên bạn truy cập vào đây nó sẽ hiện lên khung thông báo hướng dẫn, bạn hãy bấm vào "Dự án trống", và nó xử lý khoảng 1s và nó đóng hộp thoại đó lại.

Tạo dự án trống

Tới bước này các bạn sao chép đoạn script sau đây và chép đè lên hoặc chèn nó xuống dưới đoạn script có sẵn, tại đây mình sẽ chép đè lên
function guiBieuMau(e)
{
  // Thay thế bằng địa chỉ email của bạn
  var email = "rainbow.lam25@gmail.com";

  // Tiêu đề của email được gửi về
  var subject = "Biểu mẫu liên hệ KslZone.NET"; 

  // Không rành thì đùng đụng vào code ở dưới nhé
  var s = SpreadsheetApp.getActiveSheet();
  var columns = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];   
  var message = "";   

  // Lấy ra những thông tin nào có dữ liệu điền vào
  for ( var keys in columns ) {
    var key = columns[keys];
    if ( e.namedValues[key] && (e.namedValues[key] != "") ) {
      message += key + ' :: '+ e.namedValues[key] + "\n\n";
    }
  }

  // Dùng MailApp service của Google Apps Script để gửi về email của bạn.

  MailApp.sendEmail(email, subject, message);
}

Chèm code vào nội dung

sau đó thì nhấn tổ hợp phím "Ctr + S" hoặc vào "File » Lưu" và lưu lại với tên mà bạn muốn ví dụ "Gửi biểu mẫu", cái này chã quan trọng đâu bạn đặt thế nào cũng được.

Tạo trigger để chạy hàm

Google dịch ra tiếng việt nhìn khoai quá nên mình ghi tiếng anh là "trigger" luôn nhé. Tại thanh điều hướng của phần tạo script hiện tại, các bạn chọn vào "Tài nguyên » Tất cả kích hoạt của bạn".

Tất cả kích hoạt của bạn

Một hộp thoại mới sẽ hiện lên, đầu tiên các bạn hãy bấm vào dấu "x" ở trước phần myFunction đi vì mình đã ghi đè nên nó đã biến mất rồi, tiếp theo bấm chọn vào "Thêm lệnh kích hoạt mới". Tại cột chạy các bạn chọn "guiBieuMau" là hàm mà ta đã tạo ở trên, cột sự kiện chọn "Từ bảng tính" và ô cuối cùng chọn "Khi gửi biểu mẫu" như hình này

Cài đặt trigger

sau đó chọn Lưu.

Sau khi bấm lưu lại có một hộp thoại nhỏ mới hiện lên yêu cầu cấp phép để chạy trigger này, các bạn chọn "Tiếp tục"

Yêu cầu cấp phép cho trigger

sau đó tiếp tục bấm vào "Chấp nhận"

Cấp phép cho trigger

và xong, đóng hết lại và thử gửi biểu mẫu.

Như vậy là về mặt cơ bản bạn đã hoàn thành việc nhận email khi có người mới gửi vào biểu mẫu, tuy trông có hơi dài nhưng làm thì chắc các bạn thấy cũng khá là nhanh. Tới đây thì khi bất kì người dùng nào gửi biểu mẫu, thì sẽ có một email tự động gửi kèm theo những thông tin mà họ đã điền vào cho bạn. Nếu có thắc mắc hỗ trợ chỉnh sửa về hướng dẫn này thì hãy để lại tại phần nhận xét ở dưới cho mình.

25 bình luận

  1. avatar says

    23:16 Ngày 15 tháng 12 năm 2014

    E kiểm tra lại java, A đã thử hình như nó không hoạt động. Thông báo thiếu dữ liệu.
    A: Long - http://www.coctai.com

  2. avatar says

    19:07 Ngày 16 tháng 12 năm 2014

    Cái pretty print làm đẹp code nó bị lỗi, nó phát sinh tè lè lúc chuyển đổi @@. Anh thử lại nhé, em xóa cái đó rồi.

  3. avatar says

    01:23 Ngày 17 tháng 12 năm 2014

    Ok Em. Để a ngó xem thế nào.

  4. avatar says

    11:44 Ngày 18 tháng 12 năm 2014

    Cho mình hỏi cái function guiBieuMau phải sửa thế nào nếu mình thêm vào một cột chứa địa chỉ người gửi. Mong bạn giúp đỡ vì mình không rành về code. Xin cảm ơn nhiều

  5. avatar says

    11:59 Ngày 18 tháng 12 năm 2014

    Script trên của mình sẵn tự động đã lấy tất cả các cột rồi bạn nhé

  6. avatar says

    12:33 Ngày 18 tháng 12 năm 2014

    Trong script không sử dụng const để khai báo hằng hả anh

  7. avatar says

    12:34 Ngày 18 tháng 12 năm 2014

    Em rất thích script và C++ nhưng cứ nghĩ tới cú pháp là thấy đau đầu

  8. avatar says

    21:26 Ngày 18 tháng 12 năm 2014

    Chí khi nào những biết không thay đổi xuyên xuốt qua trình thì người ta mới dùng const thôi bạn nha. Riêng mình thì mình chã bao giờ đụng đến nó.

  9. avatar says

    21:27 Ngày 18 tháng 12 năm 2014

    Mình cũng chỉ biết sơ thôi chứ cũng không gọi là rành rọt :D

  10. avatar says

    06:29 Ngày 25 tháng 02 năm 2015

    Như này là sao vậy TypeError: Không thể gọi phương thức "getRange" của null. (dòng 11, tệp "Mã")

  11. avatar says

    12:51 Ngày 26 tháng 02 năm 2015

    Lạ vậy ta mình vẫn sử dụng bình thường mà, nó báo từ lúc lưu script hay sao Anh Nghĩa?

  12. avatar says

    10:44 Ngày 12 tháng 04 năm 2015

    TypeError: Không thể gọi phương thức "getRange" của null. (dòng 8, tệp "Mã")

  13. avatar says

    12:29 Ngày 12 tháng 04 năm 2015

    Mấy bạn lưu ý là chỉ lưu thôi chứ không chạy trực tiếp được nhé, mốt mình sẽ quay clip lại chi tiết luôn chứ thấy nhiều bạn vướng mắc quá.

  14. avatar says

    01:14 Ngày 06 tháng 06 năm 2015

    Blog rất hay & đẹp. Thanks đã chia sẽ.

  15. avatar says

    00:35 Ngày 08 tháng 07 năm 2015

    Cho mình hỏi 01 câu là mình thêm nhiều người nhận được không, và thêm bằng cách nào? Thanks ad nhiều!

  16. avatar says

    09:27 Ngày 08 tháng 07 năm 2015

    Bạn có thể thêm var email2 = "email@gido.com";

    và bên dưới

    MailApp.sendEmail(email2, subject, message);

  17. avatar says

    21:07 Ngày 19 tháng 07 năm 2015

    mình cũng bị như vầy luôn

  18. avatar says

    21:07 Ngày 19 tháng 07 năm 2015

    nó báo lúc chạy script á còn lưu thì bình thường

  19. avatar says

    16:40 Ngày 21 tháng 07 năm 2015

    Chính xác là vậy mà bạn, script này chỉ chạy được khi người ta submit form thôi nhé.

  20. avatar says

    20:30 Ngày 03 tháng 02 năm 2016

    Bạn ơi mình áp dụng xong mà không thấy mail phản hôi khi có thay đổi trên biểu mẫu nhỉ?

  21. avatar says

    13:15 Ngày 07 tháng 03 năm 2016

    mình chèn form vào trang website, nhung khi mọi người điền thông tin và gửi cho mình, thì hầu như người khác không thể gửi được nữa. ae chỉ giáo với...
    tdgroup.edu.vn trang liên hệ

  22. avatar says

    01:59 Ngày 08 tháng 03 năm 2016

    Lâu lắm rồi bác Lâm không có bài mới cho anh em rồi nhở :))

  23. avatar says

    15:25 Ngày 03 tháng 06 năm 2016

    Có cách nào mà 1 email có thể trả lời nhiều bản trả lời được không anh

  24. avatar says

    11:30 Ngày 05 tháng 08 năm 2016

    Hay quá cảm ơn bạn! Rất đơn giản làm phát được luôn ^^
    Mình đã áp dụng thành công cho website http://xuonginhuyhieu.com của mình rồi.

  25. avatar Nặc danh says

    19:36 Ngày 16 tháng 11 năm 2016

    bạn ơi của mình gộp tất cả các sheet câu trả lời biểu mẫu vào các tab trong 1 bảng tính. có cách nào để chỉ lấy dữ liệu trong 1 tab ko phải trong tất cả các tab ko bạn

Mọi nhận xét trên blog KslZone.NET sẽ được kiểm duyệt trước khi được xuất bản trên blog. Lưu ý: Nếu bạn để lại backlink về website của bạn, miễn là kèm theo nhận xét hợp lý thì nhận xét đó vẫn sẽ được chấp nhận. Nếu bạn muốn hiện mã HTML thì bạn cần chuyển đổi trước bằng công cụ phía dưới.