Hướng dẫn tích hợp Contact Form 7 với Google Sheets
Các bạn chắc hẳn không còn xa lạ gì với Google Sheets. Nó là 1 ứng dụng trang tính của Google (Giống như Excel của Microsoft).
Còn với Contact Form 7, nó là 1 plugin tạo form đơn giản và mạnh mẽ của WordPress.
Thời gian vừa qua có rất nhiều bạn hỏi mình làm sao để tích hợp dữ liệu từ Contact Form 7 với Google Sheets. Hôm nay mình tranh thủ chút thời gian viết 1 bài viết hướng dẫn các bạn làm điều này.
Khi nhắc đến việc tích hợp, nhiều bạn sẽ nghĩ ngay đến việc sử dụng API mà Google cung cấp. Bạn có tham khảo tạo đây: https://developers.google.com/sheets/api/
Nhưng trong trường hợp này, tôi sẽ không sử dụng API. Tôi sử dụng qua Google Forms làm trung gian để tích hợp dữ liệu.
Bước 1: Tạo form bằng Contact Form 7
Đầu tiên, bạn hãy tạo 1 form bằng Contact Form 7. Về cách tạo thì tôi sẽ không chia sẻ trong bài viết này. Nếu bạn chưa biết có thể tìm kiếm trên Google.
Tôi ví dụ bằng 1 form đơn giản bao gồm các trường:
- Họ và tên
- Địa chỉ email
- Số điện thoại
- Yêu cầu thêm
Bước 02: Tạo Google Forms và liên kết với Google Sheets
Tiếp theo, bạn hãy truy cập vào Google Drive để tạo Google Forms
Tạo form bao gồm các trường giống như Contact Form 7 đã tạo ở bước trên:
Lưu ý:
- Kiểu trường đều đặt là: Văn bản câu trả lời ngắn
- Tất cả các trường đều đặt là không bắt buộc
Tiếp theo, bạn chuyển qua tab “Câu trả lời” để tích hợp các câu trả lời với Google Sheets
Lưu ý: Nếu bạn đã có file Google Sheets trên Google Drive, bạn hãy chọn bảng tính hiện có. Còn không hãy tạo mới
Cuối cùng, hãy bấm vào nút “Xem trước” (Hình con mắt) để lấy link của Form:
Bước 03: Tích hợp Contact Form 7 với Google Forms
Bước này, chúng ta phải động đến code 1 chút. Chúng ta sẽ sử dụng Hook wpcf7_mail_sent
của Contact Form 7:
Code mẫu (Bỏ đoạn code vào file functions.php
của theme bạn đang sử dụng):
function pveser_sent_contact_to_drive( $contact_form ) { $form_id = $contact_form->id; $submission = WPCF7_Submission::get_instance(); if ( $submission ) { $posted_data = $submission->get_posted_data(); if ($form_id==698) { $fields = array( 'entry.359835661'=>urlencode($posted_data['your-name']), 'entry.359835662'=>urlencode($posted_data['your-email']), 'entry.359835663'=>urlencode($posted_data['your-phone']), 'entry.359835663'=>urlencode($posted_data['your-note']) ) ); foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); header('Content-type: text/html; charset=UTF-8'); $ch = curl_init(); curl_setopt($ch, CURLOPT_ENCODING ,"UTF-8"); $url=utf8_encode('https://docs.google.com/forms/d/e/1FAIpQLScZ3lHLjJ-fkre90TcUQUsiUUL0lP5El0clkDKKoHQQ7iaZlA/formResponse'); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_HEADER, 1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); //execute post $result = curl_exec($ch); //close connection curl_close($ch); } } }//End contact form add_action( 'wpcf7_mail_sent', 'pveser_sent_contact_to_drive' );
Giải thích:
$form_id==698
: Thay 698 thành form id của bạn (Contact Form 7)
entry.359835661
: Field name của Google Forms
Để lấy được field name này bạn vui lòng mở Google Form mà lúc xem trước ở bước trên, bấm chuột phải vào trường cần lấy và chọn Inspect, sau đó tìm đến thuộc tính name=””.
Nội dung bên trong name chính là field name cần lấy
$posted_data['your-name']
: your-name chính là field name của Contact Form 7
$url
: Link Google Form sau khi đã submit
Để lấy được link này, bạn chỉ cần vào link xem trước, sau đó bấm nút “Gửi” và bạn hãy copy link trên trình duyệt
Sau khi hoàn thiện các bước trên, bạn hãy thử nhập thông tin ở Contact Form 7 rồi bấm submit để test xem trên Google Sheets đã có dữ liệu bạn vừa nhập chưa.
Nếu chưa có, bạn hãy kiểm tra lại các bước xem có chính xác chưa. Đặc biệt là bước liên quan đến code.
Chúc bạn thành công! Có bất kỳ câu hỏi này hãy comment dưới status này.
Mình thấy hướng dẫn này của bạn cũng khá lâu rồi, không biết bây giờ còn áp dụng được không. Mình có thử và kiểm tra hết thảy các bước, contact form 7 gửi đi thì có nhận được mail, tuy nhiên vẫn không kết nối được với gg form, không biết là vì sao.
Cách này vẫn dùng được. Tuy nhiên việc lấy tên các field sẽ hơi khác chút.
Mình sẽ update cách lấy sau!
Mình muốn hỏi thêm nếu kiểu trường là radio hoặc checkbox, hoặc trường là bắt buộc thì cách trên có hoạt động hay không?
Mình cảm ơn.