Class ScriptApp

Ứng dụngScript

Truy cập và thao tác với việc xuất bản tập lệnh và các điều kiện kích hoạt. Lớp này cho phép người dùng tạo trình kích hoạt tập lệnh và kiểm soát việc xuất bản tập lệnh dưới dạng một dịch vụ.

Thuộc tính

Thuộc tínhLoạiMô tả
AuthModeAuthModeMột kiểu liệt kê xác định những danh mục dịch vụ được uỷ quyền mà Apps Script có thể thực thi thông qua một hàm được kích hoạt.
AuthorizationStatusAuthorizationStatusMột kiểu liệt kê biểu thị trạng thái uỷ quyền của một tập lệnh.
EventTypeEventTypeMột kiểu liệt kê biểu thị loại sự kiện được kích hoạt.
InstallationSourceInstallationSourceMột quá trình liệt kê cho biết cách tập lệnh được cài đặt cho người dùng dưới dạng một tiện ích bổ sung.
TriggerSourceTriggerSourceMột giá trị liệt kê biểu thị nguồn của sự kiện khiến điều kiện kích hoạt hoạt động.
WeekDayWeekdayMột kiểu liệt kê đại diện cho các ngày trong tuần.

Phương thức

Phương thứcKiểu dữ liệu trả vềMô tả ngắn
deleteTrigger(trigger)voidXoá trình kích hoạt đã cho để trình kích hoạt đó không còn chạy nữa.
getAuthorizationInfo(authMode)AuthorizationInfoLấy một đối tượng kiểm tra xem người dùng đã cấp quyền uỷ quyền cho tất cả các yêu cầu về tập lệnh hay chưa.
getAuthorizationInfo(authMode, oAuthScopes)AuthorizationInfoLấy một đối tượng kiểm tra xem người dùng đã cấp quyền uỷ quyền cho các phạm vi được yêu cầu hay chưa.
getIdentityToken()StringNhận mã thông báo danh tính OpenID Connect cho người dùng hiệu quả, nếu phạm vi openid đã được cấp.
getInstallationSource()InstallationSourceTrả về một giá trị enum cho biết cách tập lệnh được cài đặt dưới dạng tiện ích bổ sung cho người dùng hiện tại (ví dụ: liệu người dùng tự cài đặt thông qua Cửa hàng Chrome trực tuyến hay quản trị viên miền cài đặt cho tất cả người dùng).
getOAuthToken()StringNhận mã truy cập OAuth 2.0 cho người dùng có hiệu lực.
getProjectTriggers()Trigger[]Lấy tất cả các trình kích hoạt có thể cài đặt được liên kết với dự án hiện tại và người dùng hiện tại.
getScriptId()StringLấy mã nhận dạng duy nhất của dự án tập lệnh.
getService()ServiceLấy một đối tượng dùng để kiểm soát việc xuất bản tập lệnh dưới dạng một ứng dụng web.
getUserTriggers(document)Trigger[]Lấy tất cả các trình kích hoạt có thể cài đặt thuộc sở hữu của người dùng này trong tài liệu đã cho, chỉ dành cho tập lệnh hoặc tiện ích bổ sung này.
getUserTriggers(form)Trigger[]Chỉ lấy tất cả các trình kích hoạt có thể cài đặt thuộc sở hữu của người dùng này trong biểu mẫu đã cho, cho tập lệnh hoặc tiện ích bổ sung này.
getUserTriggers(spreadsheet)Trigger[]Lấy tất cả các trình kích hoạt có thể cài đặt thuộc sở hữu của người dùng này trong bảng tính đã cho, chỉ dành cho tập lệnh hoặc tiện ích bổ sung này.
invalidateAuth()voidHuỷ bỏ quyền uỷ quyền mà người dùng có hiệu lực có để thực thi tập lệnh hiện tại.
newStateToken()StateTokenBuilderTạo một trình tạo cho mã thông báo trạng thái có thể dùng trong một API gọi lại (chẳng hạn như một quy trình OAuth).
newTrigger(functionName)TriggerBuilderBắt đầu quá trình tạo một trình kích hoạt có thể cài đặt. Khi được kích hoạt, trình kích hoạt này sẽ gọi một hàm nhất định.
requireAllScopes(authMode)voidXác thực xem người dùng đã đồng ý cho tất cả các phạm vi mà tập lệnh yêu cầu hay chưa.
requireScopes(authMode, oAuthScopes)voidXác thực xem người dùng đã đồng ý cho các phạm vi được yêu cầu hay chưa.

Tài liệu chi tiết

deleteTrigger(trigger)

Xoá trình kích hoạt đã cho để trình kích hoạt đó không còn chạy nữa.

// Deletes all triggers in the current project.
const triggers = ScriptApp.getProjectTriggers();
for (let i = 0; i < triggers.length; i++) {
  ScriptApp.deleteTrigger(triggers[i]);
}

Thông số

TênLoạiMô tả
triggerTriggerĐiều kiện kích hoạt để xoá.

Ủy quyền

Các tập lệnh sử dụng phương thức này cần được uỷ quyền bằng một hoặc nhiều phạm vi sau đây:

  • https://www.googleapis.com/auth/script.scriptapp

getAuthorizationInfo(authMode)

Lấy một đối tượng kiểm tra xem người dùng đã cấp quyền uỷ quyền cho tất cả các yêu cầu về tập lệnh hay chưa. Đối tượng này cũng cung cấp một URL uỷ quyền để người dùng cấp các quyền đó, trong trường hợp bất kỳ yêu cầu nào của tập lệnh không được uỷ quyền.

Một số hoạt động thực thi tập lệnh có thể bắt đầu mà không cần người dùng đồng ý cho tất cả các phạm vi bắt buộc mà tập lệnh sử dụng. Thông tin trong đối tượng này cho phép bạn kiểm soát quyền truy cập vào các phần mã yêu cầu một số phạm vi nhất định và yêu cầu uỷ quyền các phạm vi đó cho các lần thực thi tiếp theo.

const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);
const status = authInfo.getAuthorizationStatus();
const url = authInfo.getAuthorizationUrl();

Thông số

TênLoạiMô tả
authModeAuthModeChế độ uỷ quyền mà thông tin uỷ quyền được yêu cầu; trong hầu hết các trường hợp, giá trị cho authMode phải là ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL), vì không có chế độ uỷ quyền nào khác yêu cầu người dùng cấp quyền uỷ quyền.

Cầu thủ trả bóng

AuthorizationInfo – Một đối tượng có thể cung cấp thông tin về trạng thái uỷ quyền của người dùng.


getAuthorizationInfo(authMode, oAuthScopes)

Lấy một đối tượng kiểm tra xem người dùng đã cấp quyền uỷ quyền cho các phạm vi được yêu cầu hay chưa. Đối tượng này cũng cung cấp một URL uỷ quyền để người dùng cấp các quyền đó, trong trường hợp bất kỳ phạm vi nào được yêu cầu không được uỷ quyền.

Một số hoạt động thực thi tập lệnh có thể bắt đầu mà không cần người dùng đồng ý cho tất cả các phạm vi bắt buộc mà tập lệnh sử dụng. Thông tin trong đối tượng này cho phép bạn kiểm soát quyền truy cập vào các phần mã yêu cầu một số phạm vi nhất định và yêu cầu uỷ quyền các phạm vi đó cho các lần thực thi tiếp theo. Các phạm vi không hợp lệ hoặc không bắt buộc theo tập lệnh sẽ dẫn đến lỗi.

const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL, [
  'https://www.googleapis.com/auth/documents',
  'https://www.googleapis.com/auth/presentations',
]);
const status = authInfo.getAuthorizationStatus();
const url = authInfo.getAuthorizationUrl();

Thông số

TênLoạiMô tả
authModeAuthModeChế độ uỷ quyền mà thông tin uỷ quyền được yêu cầu; trong hầu hết các trường hợp, giá trị cho authMode phải là ScriptApp.AuthMode.FULL, vì không có chế độ uỷ quyền nào khác yêu cầu người dùng cấp quyền uỷ quyền.
oAuthScopesString[]Các phạm vi OAuth mà thông tin uỷ quyền được yêu cầu.

Cầu thủ trả bóng

AuthorizationInfo – Một đối tượng cung cấp thông tin về trạng thái uỷ quyền của người dùng và URL uỷ quyền trong trường hợp thiếu một số sự đồng ý.


getIdentityToken()

Nhận mã thông báo danh tính OpenID Connect cho người dùng hiệu quả, nếu phạm vi openid đã được cấp. Phạm vi này không được đưa vào theo mặc định và bạn phải thêm phạm vi này dưới dạng một phạm vi rõ ràng trong tệp kê khai để yêu cầu. Thêm phạm vi https://www.googleapis.com/auth/userinfo.email hoặc https://www.googleapis.com/auth/userinfo.profile để trả về thông tin bổ sung về người dùng trong mã thông báo.

Mã thông báo nhận dạng được trả về là một Mã thông báo web JSON (JWT) được mã hoá và bạn phải giải mã mã thông báo này để trích xuất thông tin từ đó. Ví dụ sau đây cho thấy cách giải mã mã thông báo và trích xuất mã nhận dạng hồ sơ Google của người dùng có hiệu lực.

const idToken = ScriptApp.getIdentityToken();
const body = idToken.split('.')[1];
const decoded = Utilities
                    .newBlob(
                        Utilities.base64Decode(body),
                        )
                    .getDataAsString();
const payload = JSON.parse(decoded);

Logger.log(`Profile ID: ${payload.sub}`);
Hãy xem tài liệu về OpenID Connect để biết danh sách đầy đủ các trường (khai báo) được trả về.

Cầu thủ trả bóng

String – Mã thông báo nhận dạng (nếu có); nếu không thì là null.


getInstallationSource()

Trả về một giá trị enum cho biết cách tập lệnh được cài đặt dưới dạng tiện ích bổ sung cho người dùng hiện tại (ví dụ: liệu người dùng tự cài đặt thông qua Cửa hàng Chrome trực tuyến hay quản trị viên miền cài đặt cho tất cả người dùng).

Cầu thủ trả bóng

InstallationSource – Nguồn cài đặt.


getOAuthToken()

Nhận mã truy cập OAuth 2.0 cho người dùng có hiệu lực. Nếu phạm vi OAuth của tập lệnh đủ để uỷ quyền cho một API khác của Google mà thường yêu cầu quy trình OAuth riêng (chẳng hạn như Google Picker), thì tập lệnh có thể bỏ qua lời nhắc uỷ quyền thứ hai bằng cách truyền mã thông báo này. Mã thông báo sẽ hết hạn sau một khoảng thời gian (tối thiểu là vài phút); tập lệnh phải xử lý các lỗi uỷ quyền và gọi phương thức này để lấy mã thông báo mới khi cần.

Mã thông báo do phương thức này trả về chỉ bao gồm những phạm vi mà tập lệnh hiện cần. Những phạm vi đã được uỷ quyền trước đây nhưng không còn được tập lệnh sử dụng sẽ không có trong mã thông báo được trả về. Nếu cần thêm các phạm vi OAuth ngoài những phạm vi mà chính tập lệnh yêu cầu, thì bạn có thể chỉ định các phạm vi đó trong tệp kê khai của tập lệnh.

Cầu thủ trả bóng

String – Chuỗi biểu thị mã thông báo OAuth 2.0.


getProjectTriggers()

Lấy tất cả các trình kích hoạt có thể cài đặt được liên kết với dự án hiện tại và người dùng hiện tại.

Logger.log(
    `Current project has ${ScriptApp.getProjectTriggers().length} triggers.`,
);

Cầu thủ trả bóng

Trigger[] – Một mảng các điều kiện kích hoạt của người dùng hiện tại được liên kết với dự án này.

Ủy quyền

Các tập lệnh sử dụng phương thức này cần được uỷ quyền bằng một hoặc nhiều phạm vi sau đây:

  • https://www.googleapis.com/auth/script.scriptapp

getScriptId()

Lấy mã nhận dạng duy nhất của dự án tập lệnh. Đây là phương thức ưu tiên để lấy giá trị nhận dạng duy nhất cho dự án tập lệnh thay vì getProjectKey(). Bạn có thể sử dụng mã nhận dạng này ở tất cả những nơi mà trước đây bạn cung cấp khoá dự án.

Cầu thủ trả bóng

String – Mã nhận dạng của dự án tập lệnh.


getService()

Lấy một đối tượng dùng để kiểm soát việc xuất bản tập lệnh dưới dạng một ứng dụng web.

// Get the URL of the published web app.
const url = ScriptApp.getService().getUrl();

Cầu thủ trả bóng

Service – Một đối tượng dùng để theo dõi và kiểm soát việc xuất bản tập lệnh dưới dạng một ứng dụng web.


getUserTriggers(document)

Lấy tất cả các trình kích hoạt có thể cài đặt thuộc sở hữu của người dùng này trong tài liệu đã cho, chỉ dành cho tập lệnh hoặc tiện ích bổ sung này. Bạn không thể dùng phương thức này để xem các điều kiện kích hoạt được đính kèm vào các tập lệnh khác.

const doc = DocumentApp.getActiveDocument();
const triggers = ScriptApp.getUserTriggers(doc);
// Log the handler function for the first trigger in the array.
Logger.log(triggers[0].getHandlerFunction());

Thông số

TênLoạiMô tả
documentDocumentMột tệp Google Tài liệu có thể chứa các trình kích hoạt có thể cài đặt.

Cầu thủ trả bóng

Trigger[] – Một mảng các điều kiện kích hoạt thuộc sở hữu của người dùng này trong tài liệu đã cho.

Ủy quyền

Các tập lệnh sử dụng phương thức này cần được uỷ quyền bằng một hoặc nhiều phạm vi sau đây:

  • https://www.googleapis.com/auth/script.scriptapp

getUserTriggers(form)

Chỉ lấy tất cả các trình kích hoạt có thể cài đặt thuộc sở hữu của người dùng này trong biểu mẫu đã cho, cho tập lệnh hoặc tiện ích bổ sung này. Bạn không thể dùng phương thức này để xem các điều kiện kích hoạt được đính kèm vào các tập lệnh khác.

const form = FormApp.getActiveForm();
const triggers = ScriptApp.getUserTriggers(form);
// Log the trigger source for the first trigger in the array.
Logger.log(triggers[0].getTriggerSource());

Thông số

TênLoạiMô tả
formFormMột tệp Google Biểu mẫu có thể chứa các trình kích hoạt có thể cài đặt.

Cầu thủ trả bóng

Trigger[] – Một mảng các điều kiện kích hoạt do người dùng này sở hữu trong biểu mẫu đã cho.

Ủy quyền

Các tập lệnh sử dụng phương thức này cần được uỷ quyền bằng một hoặc nhiều phạm vi sau đây:

  • https://www.googleapis.com/auth/script.scriptapp

getUserTriggers(spreadsheet)

Lấy tất cả các trình kích hoạt có thể cài đặt thuộc sở hữu của người dùng này trong bảng tính đã cho, chỉ dành cho tập lệnh hoặc tiện ích bổ sung này. Bạn không thể dùng phương thức này để xem các điều kiện kích hoạt được đính kèm vào các tập lệnh khác.

const ss = SpreadsheetApp.getActiveSpreadsheet();
const triggers = ScriptApp.getUserTriggers(ss);
// Log the event type for the first trigger in the array.
Logger.log(triggers[0].getEventType());

Thông số

TênLoạiMô tả
spreadsheetSpreadsheetMột tệp Google Trang tính có thể chứa các trình kích hoạt có thể cài đặt.

Cầu thủ trả bóng

Trigger[] – Một mảng các điều kiện kích hoạt thuộc sở hữu của người dùng này trong bảng tính đã cho.

Ủy quyền

Các tập lệnh sử dụng phương thức này cần được uỷ quyền bằng một hoặc nhiều phạm vi sau đây:

  • https://www.googleapis.com/auth/script.scriptapp

invalidateAuth()

Huỷ bỏ quyền uỷ quyền mà người dùng có hiệu lực có để thực thi tập lệnh hiện tại. Dùng để huỷ mọi quyền cho tập lệnh hiện tại. Điều này đặc biệt hữu ích đối với các hàm được gắn thẻ là uỷ quyền một lần. Vì các hàm uỷ quyền một lần chỉ có thể được gọi trong lần chạy đầu tiên sau khi tập lệnh đã được uỷ quyền, nên nếu muốn thực hiện một thao tác sau đó, bạn phải thu hồi mọi quyền uỷ quyền mà tập lệnh đã có để người dùng có thể thấy lại hộp thoại uỷ quyền.

ScriptApp.invalidateAuth();

Gửi

Error – khi quá trình vô hiệu hoá không thành công


newStateToken()

Tạo một trình tạo cho mã thông báo trạng thái có thể dùng trong một API gọi lại (chẳng hạn như một quy trình OAuth).

// Generate a callback URL, given the name of a callback function. The script
// does not need to be published as a web app; the /usercallback URL suffix
// replaces /edit in any script's URL.
function getCallbackURL(callbackFunction) {
  // IMPORTANT: Replace string below with the URL from your script, minus the
  // /edit at the end.
  const scriptUrl =
      'https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz';
  const urlSuffix = '/usercallback?state=';
  const stateToken = ScriptApp.newStateToken()
                         .withMethod(callbackFunction)
                         .withTimeout(120)
                         .createToken();
  return scriptUrl + urlSuffix + stateToken;
}

Trong hầu hết các luồng OAuth2, mã thông báo state được truyền trực tiếp đến điểm cuối uỷ quyền (không phải là một phần của URL gọi lại), sau đó điểm cuối uỷ quyền sẽ truyền mã thông báo này dưới dạng một phần của URL gọi lại.

Ví dụ:

  • Tập lệnh này chuyển hướng người dùng đến URL uỷ quyền OAuth2: https://accounts.google.com/o/oauth2/auth?state=token_generated_with_this_method&callback_uri=https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback&other_oauth2_parameters
  • Người dùng nhấp vào nút uỷ quyền và trang uỷ quyền OAuth2 sẽ chuyển hướng người dùng trở lại https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=token_generated_with_this_method&other_params_that_include_tokens_or_grants
  • Lệnh chuyển hướng ở trên (quay lại http://script.google.com/...) khiến trình duyệt yêu cầu /usercallback, thao tác này sẽ gọi phương thức do StateTokenBuilder.withMethod(method) chỉ định.

Cầu thủ trả bóng

StateTokenBuilder – Một đối tượng dùng để tiếp tục quy trình tạo mã thông báo trạng thái.


newTrigger(functionName)

Bắt đầu quá trình tạo một trình kích hoạt có thể cài đặt. Khi được kích hoạt, trình kích hoạt này sẽ gọi một hàm nhất định.

// Creates an edit trigger for a spreadsheet identified by ID.
ScriptApp.newTrigger('myFunction')
    .forSpreadsheet('1234567890abcdefghijklmnopqrstuvwxyz_a1b2c3')
    .onEdit()
    .create();

Trước khi tạo một điều kiện kích hoạt, hãy xác minh rằng hàm được liên kết có tất cả các quyền OAuth cần thiết

Thông số

TênLoạiMô tả
functionNameStringHàm sẽ gọi khi điều kiện kích hoạt được thực hiện. Bạn có thể sử dụng các hàm trong thư viện đi kèm, chẳng hạn như Library.libFunction1.

Cầu thủ trả bóng

TriggerBuilder – Một đối tượng dùng để tiếp tục quy trình tạo điều kiện kích hoạt.

Ủy quyền

Các tập lệnh sử dụng phương thức này cần được uỷ quyền bằng một hoặc nhiều phạm vi sau đây:

  • https://www.googleapis.com/auth/script.scriptapp

requireAllScopes(authMode)

Xác thực xem người dùng đã đồng ý cho tất cả các phạm vi mà tập lệnh yêu cầu hay chưa. Sử dụng phương thức này nếu một quy trình thực thi dựa vào tất cả các phạm vi mà một tập lệnh yêu cầu. Nếu thiếu bất kỳ sự đồng ý nào, phương thức này sẽ kết thúc quá trình thực thi hiện tại và hiển thị lời nhắc uỷ quyền để yêu cầu sự đồng ý còn thiếu.

Phương thức này chỉ hoạt động khi người dùng chạy tập lệnh từ một nền tảng hỗ trợ sự đồng ý chi tiết, chẳng hạn như trong IDE Apps Script. Khi tập lệnh được chạy mà thiếu sự đồng ý từ một nền tảng không được hỗ trợ (chẳng hạn như một tiện ích bổ sung Google Workspace), tập lệnh sẽ hiển thị một lời nhắc uỷ quyền khi bắt đầu thực thi để yêu cầu tất cả các phạm vi.

ScriptApp.requireAllScopes(ScriptApp.AuthMode.FULL);

Thông số

TênLoạiMô tả
authModeAuthModeChế độ uỷ quyền mà phạm vi tập lệnh cần được đánh giá, trong hầu hết các trường hợp, giá trị cho authMode phải là ScriptApp.AuthMode.FULL, vì không có chế độ uỷ quyền nào khác yêu cầu người dùng cấp quyền uỷ quyền.

requireScopes(authMode, oAuthScopes)

Xác thực xem người dùng đã đồng ý cho các phạm vi được yêu cầu hay chưa. Sử dụng phương thức này nếu một quy trình thực thi dựa vào một hoặc nhiều dịch vụ. Nếu thiếu bất kỳ sự đồng ý nào được chỉ định, thì phương thức này sẽ kết thúc quá trình thực thi hiện tại và hiển thị lời nhắc uỷ quyền để yêu cầu sự đồng ý còn thiếu. Các phạm vi không hợp lệ hoặc không bắt buộc theo tập lệnh sẽ dẫn đến lỗi.

Phương thức này chỉ hoạt động khi người dùng chạy tập lệnh từ một nền tảng hỗ trợ sự đồng ý chi tiết, chẳng hạn như trong IDE Apps Script. Khi tập lệnh được chạy mà thiếu sự đồng ý từ một nền tảng không được hỗ trợ (chẳng hạn như một tiện ích bổ sung Google Workspace), tập lệnh sẽ hiển thị một lời nhắc uỷ quyền khi bắt đầu thực thi để yêu cầu tất cả các phạm vi.

ScriptApp.requireScopes(ScriptApp.AuthMode.FULL, [
  'https://www.googleapis.com/auth/documents',
  'https://www.googleapis.com/auth/presentations',
]);

Thông số

TênLoạiMô tả
authModeAuthModeChế độ uỷ quyền mà các phạm vi được yêu cầu cần được đánh giá, trong hầu hết các trường hợp, giá trị cho authMode phải là ScriptApp.AuthMode.FULL, vì không có chế độ uỷ quyền nào khác yêu cầu người dùng cấp quyền uỷ quyền.
oAuthScopesString[]Các phạm vi OAuth cần thiết để hoàn tất quy trình thực thi đã cho.

Các phương thức ngừng hoạt động