Xuất bản tập lệnh dưới dạng ứng dụng web nếu bạn xây dựng giao diện người dùng cho tập lệnh đó. Ví dụ: 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 ứng dụng web để người dùng có thể truy cập trực tiếp từ trình duyệt.
Cả tập lệnh độc lập và tập lệnh 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à đá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 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:
- Tập lệnh chứa hàm
doGethoặcdoPost. - Hàm trả về đối tượng HTML service
HtmlOutputcủa dịch vụ HTML hoặc đối tượng Content serviceTextOutputcủa dịch vụ Nội dung.
Các tham số trong 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 yêu cầu HTTP GET đến ứng dụng, 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. Trong cả hai trường hợp, đối số e đại diện cho một tham số sự kiện có thể chứa thông tin về mọi tham số yêu cầu. Cấu trúc của đối tượng sự kiện được trình bày trong bảng sau:
| Trường | |
|---|---|
e.queryString |
Giá trị của phần chuỗi truy vấn của 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 tham 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 sử dụng, luôn là chuỗi trống. |
e.contentLength |
Độ dài của 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 POST text/csv |
e.postData.contents |
Văn bản nội dung của nội dung 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ề kết quả đầ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 các tên tham số sau đây và bạn không nên sử dụng trong các 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 "Rất tiếc, tệp mà 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 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 biểu tượng Cài đặt 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 sử dụng ứng dụng của mình, miễn là bạn đã cấp quyền truy cập cho họ.
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 các ứng dụng đó thay đổi thành một bộ nhớ dùng chung hoặc tài khoản trong một miền khác. Bạn có thể khắc phục vấn đề này bằng cách yêu cầu chủ sở hữu hoặc cộng tác viên mới 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 ứ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 > Kiểm thử việc triển khai.
- Bên cạnh "Chọn loại", hãy nhấp vào biểu tượng Cài đặt loại triển khai > Ứng dụng web.
- Trong 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.
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 vào URL này. Phiên bản ứng dụng này luôn chạy mã được lưu gần đây nhất và chỉ dùng để 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ố quyền uỷ quyền.
Để vô hiệu hoá mọi quyền 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 JSON executeAs
trong tệp kê khai
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 cẩn thận 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 – không bao giờ truyền các mã thông báo này cho ứng dụng.
Quyền
Quyền đối với ứ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:
- Thực thi ứng dụng dưới danh tính của tôi – Trong trường hợp này, tập lệnh luôn thực thi dưới danh tính 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 dưới danh tính của người dùng truy cập vào ứng dụng web—Trong trường hợp này, tập lệnh 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 cho phép truy cập.
Để ngăn chặn hành vi lạm dụng, Apps Script áp đặt các giới hạn về tốc độ mà người dùng mới có thể cho phép một ứng dụng web thực thi dưới danh tính của 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 dưới danh tính của bạn" sẽ khiến ứng dụng web thực thi dưới 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 quyền truy cập để ngăn chặn hành vi sử dụng độc hại. Nếu ứng dụng web được nhúng có vẻ không hoạt động, hãy kiểm tra để xem 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 ứng dụng web vào Sites, trước tiên, bạn phải triển khai ứng dụng đó. Bạn cũng cần URL đã triển khai từ hộp thoại Triển khai.
Để nhúng ứ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 ở bản xem trước của trang. Khi bạn xuất bản trang, người xem trang web có thể cần cho phép ứng dụng web trước khi ứng dụng đó thực thi bình thường. Các ứng dụng web chưa được cho phép sẽ hiển thị lời nhắc cho phép đối với người dùng.
Ứng dụng web và nhật ký duyệt web
Để mô phỏng ứng dụng nhiều trang hoặc ứ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ý duyệt web khi người dùng di chuyển trong ứng dụng của bạn. Lắng nghe các sự kiện nhật ký để ứng dụng web hiển thị đúng giao diện người dùng khi người dùng di chuyển qua lại bằng các nút 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ự động xây dựng giao diện người dùng dựa trên các tham số đó, cho phép người dùng bắt đầu ứng dụng ở một trạng thái cụ thể.
Apps Script cung cấp hai API JavaScript phía máy khách không đồng bộ để hỗ trợ tạo các ứng dụng web được liên kết với nhật ký duyệt web:
google.script.historycung cấp các phương thức cho phép phản hồi động đối với các thay đổi trong nhật ký duyệt web. Đ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ý duyệt web, thay thế trạng thái trên cùng trong ngăn xếp nhật ký và đặt hàm callback trình nghe để phản hồi các thay đổi trong 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. Chúng 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.