Auto Remplir Google Doc Từ Đơn Đăng Ký Google

Video how to make a google form populate a google sheet

Copier les données de Google Sheets

Hồi lâu rồi tôi không viết về Google Apps Script, vì vậy tôi quyết định nghiên cứu một số tính năng mới của Apps Script.

Khi tôi bắt đầu với Apps Script gần 6 năm trước, có rất nhiều điều tôi muốn làm, nhưng tôi chưa có đủ kỹ năng để thực hiện hoặc gặp phải các giới hạn của Apps Script. Bây giờ khi Apps Script đã trưởng thành, là lúc để xem lại những mong muốn ban đầu đó.

Trong bài hướng dẫn này, chúng ta sẽ xem xét một quy trình làm việc rất hữu ích cho độc giả của trang web này. Chúng ta sẽ lấy đơn đăng ký Google và sử dụng dữ liệu đó để điền vào mẫu tùy chỉnh trong Google Docs.

Chuẩn bị Google Form của chúng ta

Đầu tiên, chúng ta cần tạo một biểu mẫu Google để chấp nhận các đơn đăng ký cũng như một tài liệu Google sẽ làm mẫu.

Trong ví dụ này, tôi chỉ tạo một biểu mẫu cơ bản để thu thập dữ liệu giống như này:

Biểu mẫu

Như bạn có thể thấy, không có gì đặc biệt ở đây. Tôi đã tạo một bảng tính để lưu các phản hồi vì đó là nơi mã của chúng tôi được thực thi để tạo tài liệu Google.

Tạo mẫu Google Document

Sau khi tạo biểu mẫu và bảng tính, tôi đã tạo một tài liệu Google trong cùng thư mục để làm mẫu. Mỗi khi một biểu mẫu được gửi trong bảng tính, mã của chúng tôi sẽ tạo một bản sao và thay thế một số phần văn bản bằng dữ liệu được gửi trong biểu mẫu.

Như bạn có thể thấy, đó là một tài liệu khá cơ bản, nhưng vì chúng tôi chỉ tạo một bản sao, mẫu của bạn có thể bao gồm các kiểu, hình ảnh, v.v. khác nếu bạn muốn.

Có một số điểm quan trọng cần lưu ý về mẫu này. Có nhiều cách để điền vào một tài liệu Google bằng cách sử dụng Google Apps Script. Một cách là tạo tài liệu bằng cách lập trình sử dụng mã, nghĩa là chúng ta thêm các phần tử khác nhau của tài liệu bằng mã.

Mặc dù điều này có thể là khả thi, tôi đã thấy rằng việc này rất khó khăn, đặc biệt khi tạo tài liệu với độ phức tạp hoặc kiểu cụ thể.

Phương pháp khác là chiến lược chúng tôi đang áp dụng ở đây. Chúng tôi tạo một tài liệu làm mẫu, sau đó tìm kiếm các phần văn bản cụ thể trong tài liệu mẫu và thay thế chúng bằng dữ liệu trực tiếp khi biểu mẫu được gửi.

Thực hiện các phương pháp tốt để thay thế trong Google Docs

Tuy nhiên, vì chúng tôi phải tìm kiếm toàn bộ văn bản trong tài liệu để thay thế, việc tạo văn bản bạn muốn thay thế là duy nhất trong tài liệu là tốt nhất. Để làm điều này, bạn nên sử dụng điều được biết đến trong thế giới phát triển web là các thẻ thay thế. Trong ví dụ trên, tôi bao quanh tên các trường tôi muốn thay thế bằng cặp ngoặc nhọn như này {{Trường muốn thay thế}}.

Mặc dù đây chỉ là một trong nhiều lựa chọn, có một số khác được sử dụng phổ biến:

{{Trường muốn thay thế}}
%Trường muốn thay thế%

[[Trường muốn thay thế]]

Cuối cùng, điều quan trọng là tạo ra một thẻ duy nhất mà chúng ta có thể tìm thấy sau này. Sử dụng một ký tự như một dấu ngoặc đơn giúp việc tìm kiếm này dễ dàng hơn, vì hai dấu ngoặc nhọn là một mẫu khó tìm thấy ở bất kỳ đâu khác.

Một lưu ý khác ở đây, chỉ để sức khỏe tâm trí của bạn, hãy đảm bảo rằng văn bản trong dấu ngoặc của bạn phù hợp với tiêu đề trong bảng tính.

Sử dụng mã để điền vào Google Document

Bây giờ mọi thứ đã sẵn sàng, chúng ta có thể xem xét mã sẽ thực hiện tất cả điều này. Đối với những người không quen với cách viết một tệp dự án cơ bản của Google Apps Script, bạn có thể muốn xem một bài viết trước đó của tôi mô tả quy trình từ đầu đến cuối.

Đối với bài hướng dẫn này, tôi giả sử tất cả mọi người đều biết cách mở Công cụ> Trình soạn mã để chỉnh sửa một tệp mã và đặt một trình kích hoạt gửi biểu mẫu cho một tệp mã cụ thể.

Mã dưới đây đã được chú thích khá tốt để hiển thị ý đồ của mỗi dòng, vì vậy tôi sẽ không lặp lại nhiều ở đây:

function autoFillGoogleDocFromForm(e) {
  // e.values là một mảng các giá trị biểu mẫu
  var timestamp = e.values[0];
  var firstName = e.values[1];
  var lastName = e.values[2];
  var title = e.values[3];

  // file là tệp mẫu và chúng ta lấy nó bằng ID của nó
  var file = DriveApp.getFileById('your_file_id_here');

  // Chúng ta có thể tạo một bản sao của mẫu, đặt tên cho nó và có thể chỉ định nơi nó nên tồn tại
  // file.makeCopy sẽ trả về một đối tượng tệp Google Drive
  var folder = DriveApp.getFolderById('your_folder_id_here');
  var copy = file.makeCopy(lastName + ',' + firstName, folder);

  // Sau khi tạo tệp mới, chúng ta cần mở tệp dưới dạng tài liệu bằng ID của nó
  var doc = DocumentApp.openById(copy.getId());

  // Vì tất cả những gì chúng ta cần thay đổi nằm trong phần thân, chúng ta cần lấy phần thân
  var body = doc.getBody();

  // Sau đó, chúng ta gọi tất cả các phương thức replaceText
  body.replaceText('{{First Name}}', firstName);
  body.replaceText('{{Last Name}}', lastName);
  body.replaceText('{{Title}}', title);

  // Cuối cùng, chúng ta lưu và đóng tài liệu để giữ các thay đổi của chúng ta
  doc.saveAndClose();
}

Một số điểm lưu ý về dự án này, myFunction là cái được gọi khi trình kích hoạt gửi biểu mẫu được kích hoạt và truyền giá trị biểu mẫu dưới dạng tham số ‘e’ cho hàm. Khung mã này sử dụng cả hai lớp DriveApp và DocumentApp của Google Apps Script, vì vậy hãy cẩn thận khi viết phiên bản riêng của bạn để phân biệt giữa những gì là tệp Google Drive và tài liệu Google.

Cấu hình trình kích hoạt cho gửi biểu mẫu

Bây giờ chúng ta đã có tất cả các tệp mã và tài nguyên Drive, chúng ta cần thêm một trình kích hoạt vào dự án của chúng ta để kịch bản chạy mỗi khi có một biểu mẫu được gửi. Để làm điều này, chúng ta có thể truy cập vào menu “Sửa” trong trình soạn mã, sau đó nhấp vào mục “Trình kích hoạt hiện tại của dự án”.

Trình soạn mã sẽ mở trong một cửa sổ mới và hiển thị tất cả các trình kích hoạt liên kết với một dự án nếu có. Để thêm một trình kích hoạt, nhấp vào nút “Thêm một trình kích hoạt” ở góc dưới bên phải của màn hình, điều này sẽ mở một menu modal với các tùy chọn để cấu hình trình kích hoạt.

Đầu tiên, chúng tôi muốn chọn hàm sẽ được kích hoạt, trong trường hợp này là “autoFillGoogleDocFromForm”. Chúng ta có thể để triển khai “Chính”, trừ khi bạn biết bạn đang làm gì ở đây. Sau đó, chúng tôi muốn chọn “Từ một bảng tính” làm nguồn sự kiện và loại sự kiện “Khi gửi biểu mẫu”. Tất cả các thông số này đảm bảo rằng dữ liệu đúng được truyền cho kịch bản của chúng tôi khi nó được kích hoạt.

Thông số cuối cùng, đó là một đề xuất tùy chỉnh, quyết định thông báo lỗi của bạn một cách tần suất. Lời khuyên của tôi là đặt nó thành thông báo ngay lập tức. Sau khi bạn đã cài đặt điều này, bạn có thể nhấp vào Lưu và trình kích hoạt của chúng tôi sẽ hoạt động. Bạn có thể thử nghiệm bằng cách gửi một biểu mẫu kiểm tra.

Kết luận

Tôi đã mất một thời gian để hiểu sự khác biệt này, nhưng có thể tóm tắt như sau: tất cả các tài liệu Google đều là tệp Drive, nhưng không phải tệp Drive nào cũng là tài liệu Google. Google Drive điều khiển các khía cạnh của tệp, chẳng hạn như vị trí, người có quyền truy cập và cách chúng ta tải lên, nhưng để thay đổi một tệp là tài liệu Google, chúng ta phải khai thác nó bằng cách sử dụng lớp DocumentApp.

Sau khi gửi biểu mẫu kiểm tra của chúng tôi, chúng tôi nhận được một tài liệu Google trong thư mục chúng tôi chỉ định nhìn như thế này:

Kết quả

Mặc dù ví dụ này khá đơn giản, tôi dự đoán rằng có rất nhiều trường hợp sử dụng cho quy trình như vậy, từ việc tạo chứng chỉ đến việc nhập hóa đơn hoặc đơn đặt hàng, đây sẽ là một công cụ hữu ích khác để có trong hộp công cụ Google Apps Script của bạn.

Sau hơn 100 bình luận về bài viết này và các video khác trên YouTube, tôi đã tạo một số hướng dẫn phát triển các tính năng mà một số người có thể muốn sử dụng:

Hướng dẫn này giống như việc sử dụng một biểu mẫu Google để kích hoạt tự động hóa, nhưng thay vào đó, chúng tôi chạy tự động hóa từ một mục menu và rút trích dữ liệu từ một bảng tính Google hiện có. Chúng tôi cũng viết URL của tài liệu đã tạo vào bảng tính.

Câu hỏi thường gặp

  • Thay thế văn bản bằng liên kết có thể nhấp vào

Nhiều người đã hỏi làm thế nào để thay thế văn bản trong mẫu tài liệu Google bằng liên kết có thể nhấp vào. Hướng dẫn đã liên kết ở trên cho thấy bạn có thể sửa đổi mã này để chèn liên kết vào mẫu của bạn.

Crawlan.com

Related posts