Xuất bản tập lệnh dưới dạng một ứng dụng web nếu bạn tạo giao diện người dùng cho tập lệnh đó. Ví dụ: một tập lệnh cho phép người dùng lên lịch hẹn với các thành viên của nhóm hỗ trợ sẽ được trình bày tốt nhất dưới dạng một ứng dụng web để người dùng truy cập trực tiếp vào tập lệnh đó từ trình duyệt của họ.
Cả tập lệnh độc lập và tập lệnh được liên kết với các ứng dụng Google Workspace đều có thể được chuyển thành ứng dụng web, miễn là chúng đáp ứng các yêu cầu sau.
Yêu cầu đối với ứng dụng web
Bạn có thể xuất bản một tập lệnh dưới dạng ứng dụng web nếu tập lệnh đó đáp ứng các yêu cầu sau:
- Nó chứa hàm
doGethoặcdoPost. - Hàm này trả về một đối tượng Dịch vụ HTML
HtmlOutputhoặc một đối tượng Dịch vụ nội dungTextOutput.
Tham số yêu cầu
Khi người dùng truy cập vào một ứng dụng hoặc một chương trình gửi cho ứng dụng đó một yêu cầu HTTP GET, Google Apps Script sẽ chạy hàm doGet. Khi một chương trình gửi yêu cầu HTTP POST đến ứng dụng, Apps Script sẽ chạy doPost thay vào đó. Trong cả hai trường hợp, đối số e đại diện cho một thông số sự kiện có thể chứa thông tin về mọi thông số yêu cầu. Cấu trúc của đối tượng sự kiện được minh hoạ trong bảng sau:
| Trường | |
|---|---|
e.queryString |
Giá trị của phần chuỗi truy vấn trong URL hoặc name=alice&n=1&n=2 |
e.parameter |
Một đối tượng gồm các cặp khoá/giá trị tương ứng với các thông số yêu cầu. Chỉ giá trị đầu tiên được trả về cho các tham số có nhiều giá trị. {"name": "alice", "n": "1"} |
e.parameters |
Một đối tượng tương tự như {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo |
Đường dẫn URL sau |
e.contextPath |
Không được dùng, luôn là chuỗi trống. |
e.contentLength |
Độ dài của phần nội dung yêu cầu cho các yêu cầu POST hoặc 332 |
e.postData.length |
Tương tự như 332 |
e.postData.type |
Loại MIME của nội dung yêu cầu POST text/csv |
e.postData.contents |
Nội dung văn bản của phần nội dung yêu cầu POST Alice,21 |
e.postData.name |
Luôn là giá trị "postData" postData |
Truyền các tham số như username và age đến một URL như sau:
https://script.google.com/.../exec?username=jsmith&age=21
Hiển thị các tham số như sau:
function doGet(e) {
var params = JSON.stringify(e);
return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}
Trong ví dụ trước, doGet trả về đầu ra sau:
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
Hệ thống đã dành riêng những tên tham số sau đây và bạn không nên sử dụng chúng trong tham số URL hoặc nội dung POST:
csid
Việc sử dụng các tham số này có thể dẫn đến phản hồi HTTP 405 kèm theo thông báo lỗi "Xin lỗi, tệp bạn yêu cầu không tồn tại". Nếu có thể, hãy cập nhật tập lệnh để sử dụng các tên tham số khác.
Triển khai tập lệnh dưới dạng ứng dụng web
Để triển khai một tập lệnh dưới dạng ứng dụng web, hãy làm theo các bước sau:
- Ở trên cùng bên phải của dự án tập lệnh, hãy nhấp vào Triển khai > Triển khai mới.
- Bên cạnh "Chọn loại", hãy nhấp vào Bật các loại triển khai > Ứng dụng web.
- Nhập thông tin về ứng dụng web của bạn vào các trường trong phần "Cấu hình triển khai".
- Nhấp vào Triển khai.
Chia sẻ URL ứng dụng web với những người mà bạn muốn họ sử dụng ứng dụng của bạn, miễn là bạn đã cấp cho họ quyền truy cập.
Các ứng dụng web được triển khai trong một miền sẽ ngừng hoạt động nếu quyền sở hữu của chúng thay đổi thành bộ nhớ dùng chung hoặc tài khoản trong một miền khác. Chủ sở hữu hoặc cộng tác viên mới có thể khắc phục vấn đề này bằng cách triển khai lại ứng dụng web trong miền mới. Ngoài ra, nếu ứng dụng web được chuyển trở lại miền ban đầu, thì ứng dụng web sẽ bắt đầu hoạt động lại cho miền đó mà không cần triển khai lại.
Kiểm thử việc triển khai ứng dụng web
Để kiểm thử tập lệnh dưới dạng một ứng dụng web, hãy làm theo các bước bên dưới:
- Ở trên cùng bên phải của dự án tập lệnh, hãy nhấp vào Triển khai > Kiểm thử việc triển khai.
- Bên cạnh "Chọn loại", hãy nhấp vào Enable deployment types (Bật các loại triển khai) > Web app (Ứng dụng web).
- Trong phần URL ứng dụng web, hãy nhấp vào Sao chép.
Dán URL vào trình duyệt rồi kiểm thử ứng dụng web của bạn.
URL này kết thúc bằng
/devvà chỉ những người dùng có quyền chỉnh sửa tập lệnh mới có thể truy cập. Phiên bản này của ứng dụng luôn chạy mã đã lưu gần đây nhất và chỉ dành cho mục đích kiểm thử trong quá trình phát triển.
Để kiểm thử tính năng OAuth chi tiết trên ứng dụng web, hãy đảm bảo rằng dự án của bạn chưa có một số uỷ quyền.
Để huỷ mọi uỷ quyền hiện có, hãy sử dụng ScriptApp.invalidateAuth.
Đối với mọi ứng dụng web đã được triển khai và đang chạy dưới danh tính của người dùng đang hoạt động, hãy sửa đổi trường executeAs JSON trong manifest thành USER_DEPLOYING.
Khi triển khai các ứng dụng web để chạy dưới dạng nhà phát triển, hãy hết sức thận trọng khi xử lý mã thông báo OAuth thu được thông qua ScriptApp.getOAuthToken. Các mã thông báo này có thể cấp cho các ứng dụng khác quyền truy cập vào dữ liệu của bạn – đừng bao giờ truyền chúng đến máy khách.
Quyền
Các quyền đối với một ứng dụng web sẽ khác nhau tuỳ thuộc vào cách bạn chọn thực thi ứng dụng:
- Chạy ứng dụng dưới tên của tôi – Trong trường hợp này, tập lệnh luôn chạy dưới tên của bạn (chủ sở hữu tập lệnh), bất kể ai truy cập vào ứng dụng web.
- Thực thi ứng dụng với tư cách là người dùng truy cập vào ứng dụng web – Trong trường hợp này, tập lệnh sẽ chạy dưới danh tính của người dùng đang hoạt động bằng ứng dụng web. Phương pháp cấp quyền này khiến ứng dụng web hiển thị email của chủ sở hữu tập lệnh khi người dùng uỷ quyền truy cập.
Để ngăn chặn hành vi sai trái, Apps Script áp đặt giới hạn về tốc độ mà người dùng mới có thể uỷ quyền cho một ứng dụng web thực thi với tư cách là người dùng. Các giới hạn này phụ thuộc vào nhiều yếu tố, trong đó có việc tài khoản xuất bản có thuộc miền Google Workspace hay không.
Cộng tác trên các ứng dụng web bằng bộ nhớ dùng chung. Khi một ứng dụng web trong bộ nhớ dùng chung được triển khai, việc chọn "thực thi với tư cách là bạn" sẽ khiến ứng dụng web thực thi theo quyền của người dùng đã triển khai ứng dụng đó (vì không có chủ sở hữu tập lệnh).
Nhúng ứng dụng web vào Google Sites {:#embed-web-app}
Các ứng dụng web được nhúng vẫn phải tuân theo các quyền truy cập để ngăn chặn hành vi sử dụng trái phép. Nếu ứng dụng web được nhúng của bạn không hoạt động, hãy kiểm tra xem các quyền do chủ sở hữu ứng dụng web và quản trị viên miền đặt có cho phép sử dụng ứng dụng đó hay không.
Để nhúng một ứng dụng web vào Sites, trước tiên, ứng dụng đó phải được triển khai. Bạn cũng cần có URL đã triển khai trong hộp thoại Triển khai.
Để nhúng một ứng dụng web vào trang Sites, hãy làm theo các bước sau:
- Mở trang Sites mà bạn muốn thêm ứng dụng web.
- Chọn Chèn > Nhúng URL.
- Dán URL ứng dụng web rồi nhấp vào THÊM.
Ứng dụng web xuất hiện trong một khung hình trong bản xem trước của trang. Khi bạn xuất bản trang, người xem trang web của bạn có thể cần phải uỷ quyền cho ứng dụng web trước khi ứng dụng này thực thi bình thường. Các ứng dụng web trái phép sẽ hiển thị lời nhắc uỷ quyền cho người dùng.
Ứng dụng web và nhật ký duyệt web
Để mô phỏng một ứng dụng nhiều trang hoặc một ứng dụng có giao diện người dùng động được kiểm soát bằng các tham số URL, hãy xác định một đối tượng trạng thái để biểu thị giao diện người dùng hoặc trang của ứng dụng, đồng thời đẩy trạng thái vào nhật ký trình duyệt khi người dùng điều hướng ứng dụng của bạn. Lắng nghe các sự kiện trong nhật ký để ứng dụng web của bạn hiển thị giao diện người dùng chính xác khi người dùng điều hướng qua lại bằng các nút trên trình duyệt. Bằng cách truy vấn các tham số URL tại thời gian tải, hãy để ứng dụng của bạn tạo giao diện người dùng một cách linh động dựa trên các tham số đó, cho phép người dùng khởi động ứng dụng ở một trạng thái cụ thể.
Apps Script cung cấp 2 API JavaScript không đồng bộ phía máy khách để hỗ trợ việc tạo các ứng dụng web được liên kết với nhật ký trình duyệt:
google.script.historycung cấp các phương thức cho phép phản hồi linh hoạt đối với các thay đổi trong nhật ký trình duyệt. Điều này bao gồm: đẩy các trạng thái (Đối tượng đơn giản mà bạn xác định) vào nhật ký trình duyệt, thay thế trạng thái trên cùng trong ngăn xếp nhật ký và đặt hàm callback của trình nghe để phản hồi các thay đổi về nhật ký.google.script.urlcung cấp phương tiện để truy xuất các tham số URL và phân mảnh của URL của trang hiện tại (nếu có).
Các API nhật ký này chỉ dành cho ứng dụng web. Các thành phần này không được hỗ trợ cho thanh bên, hộp thoại hoặc tiện ích bổ sung. Bạn cũng không nên sử dụng chức năng này trong các ứng dụng web được nhúng trong Sites.