Method: scripts.run

Chạy một hàm trong dự án Apps Script. Dự án tập lệnh phải được triển khai để sử dụng với API Apps Script và ứng dụng gọi phải dùng chung một dự án Cloud Platform.

Phương thức này yêu cầu uỷ quyền bằng mã thông báo OAuth 2.0 bao gồm ít nhất một trong các phạm vi được liệt kê trong mục Uỷ quyền; Không thể thực thi những dự án tập lệnh không yêu cầu uỷ quyền thông qua API này. Để tìm đúng phạm vi cần đưa vào mã thông báo xác thực, hãy mở trang Tổng quan về dự án tập lệnh rồi di chuyển xuống "Phạm vi OAuth của dự án".

Lỗi 403, PERMISSION_DENIED: The caller does not have permission cho biết rằng dự án Cloud Platform dùng để cho phép yêu cầu không giống với dự án mà tập lệnh sử dụng.

Yêu cầu HTTP

POST https://script.googleapis.com/v1/scripts/{scriptId}:run

URL sử dụng cú pháp Chuyển mã gRPC.

Tham số đường dẫn

Tham số
scriptId

string

Mã nhận dạng của tập lệnh cần thực thi. Tìm mã tập lệnh trên trang Cài đặt dự án trong phần "Mã".

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "function": string,
  "parameters": [
    value
  ],
  "sessionState": string,
  "devMode": boolean
}
Trường
function

string

Tên hàm cần thực thi trong tập lệnh đã cho. Tên không bao gồm dấu ngoặc đơn hoặc tham số. Tệp này có thể tham chiếu một hàm trong thư viện đi kèm, chẳng hạn như Library.libFunction1.

parameters[]

value (Value format)

Các tham số cần được truyền đến hàm đang được thực thi. Loại đối tượng cho mỗi tham số phải khớp với loại dự kiến trong Apps Script. Thông số không được là loại đối tượng dành riêng cho Apps Script (chẳng hạn như Document hoặc Calendar); chúng chỉ có thể là các kiểu dữ liệu nguyên thuỷ như string, number, array, object hoặc boolean. Không bắt buộc.

sessionState

string

Không dùng nữa. Chỉ sử dụng với các tiện ích bổ sung dành cho Android. Mã đại diện cho phiên hiện tại của người dùng trong ứng dụng Android dành cho Google Tài liệu hoặc Trang tính, được đưa vào dưới dạng dữ liệu bổ sung trong Ý định chạy tiện ích bổ sung. Khi chạy ở trạng thái phiên, tiện ích bổ sung dành cho Android sẽ nhận được đặc quyền của tập lệnh ràng buộc. Tức là, tiện ích này có thể truy cập vào các thông tin như vị trí con trỏ hiện tại của người dùng (trong Tài liệu) hoặc ô đã chọn (trong Trang tính). Để truy xuất trạng thái, hãy gọi Intent.getStringExtra("com.google.android.apps.docs.addons.SessionState"). Không bắt buộc.

devMode

boolean

Nếu true và người dùng là chủ sở hữu của tập lệnh, thì tập lệnh sẽ chạy ở phiên bản được lưu gần đây nhất thay vì phiên bản được triển khai để sử dụng với API Apps Script. Không bắt buộc; mặc định là false.

Nội dung phản hồi

Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:

Hình minh hoạ quá trình thực thi một hàm của Apps Script bắt đầu bằng run. Phản hồi thực thi không đến cho đến khi hàm hoàn tất việc thực thi. Thời gian chạy thực thi tối đa có trong Hướng dẫn về hạn mức của Apps Script.

Sau khi quá trình thực thi bắt đầu, có thể có một trong 4 kết quả:

  • Nếu hàm tập lệnh trả về thành công, trường response sẽ chứa đối tượng ExecutionResponse có giá trị trả về của hàm trong trường result của đối tượng.
  • Nếu hàm của tập lệnh (hoặc chính Apps Script) trả về một trường hợp ngoại lệ, thì trường error sẽ chứa đối tượng Status. Trường details của đối tượng Status chứa một mảng có một đối tượng ExecutionError duy nhất cung cấp thông tin về bản chất của lỗi.
  • Nếu quá trình thực thi chưa hoàn tất, trường done sẽ là false và không có trường response hoặc error.
  • Nếu lệnh gọi run không thành công (ví dụ: do yêu cầu không đúng định dạng hoặc lỗi uỷ quyền), thì phương thức này sẽ trả về một mã phản hồi HTTP trong phạm vi 4XX có định dạng khác cho nội dung phản hồi. Thư viện ứng dụng tự động chuyển đổi phản hồi 4XX thành một lớp ngoại lệ.

Biểu diễn dưới dạng JSON
{
  "done": boolean,

  // Union field result can be only one of the following:
  "error": {
    object (Status)
  },
  "response": {
    "@type": string,
    field1: ...,
    ...
  }
  // End of list of possible types for union field result.
}
Trường
done

boolean

Trường này cho biết liệu quá trình thực thi tập lệnh đã hoàn tất hay chưa. Một lượt thực thi đã hoàn tất có trường response được điền sẵn chứa ExecutionResponse từ hàm đã thực thi.

Trường kết hợp result. Kết quả của thao tác, có thể là error hoặc response hợp lệ. Nếu done == false, thì cả errorresponse đều không được đặt. Nếu done == true, bạn có thể đặt chính xác một trong hai giá trị error hoặc response. Một số dịch vụ có thể không cung cấp kết quả. result chỉ có thể là một trong những trạng thái sau đây:
error

object (Status)

Nếu lệnh gọi run thành công nhưng hàm tập lệnh (hoặc chính Apps Script) trả về một ngoại lệ, thì trường này sẽ chứa đối tượng Status. Trường details của đối tượng Status chứa một mảng có một đối tượng ExecutionError duy nhất cung cấp thông tin về bản chất của lỗi.

response

object

Nếu hàm tập lệnh trả về thành công, trường này sẽ chứa đối tượng ExecutionResponse có giá trị trả về của hàm.

Một đối tượng có chứa các trường thuộc loại tuỳ ý. Trường bổ sung "@type" chứa URI xác định kiểu. Ví dụ: { "id": 1234, "@type": "types.example.com/standard/id" }.

Phạm vi cấp phép

Yêu cầu một trong các phạm vi OAuth sau:

  • https://apps-apis.google.com/a/feeds
  • https://apps-apis.google.com/a/feeds/alias/
  • https://apps-apis.google.com/a/feeds/groups/
  • https://mail.google.com/
  • https://sites.google.com/feeds
  • https://www.google.com/calendar/feeds
  • https://www.google.com/m8/feeds
  • https://www.googleapis.com/auth/admin.directory.group
  • https://www.googleapis.com/auth/admin.directory.user
  • https://www.googleapis.com/auth/documents
  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/drive
  • https://www.googleapis.com/auth/dynamiccreatives
  • https://www.googleapis.com/auth/forms
  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/groups
  • https://www.googleapis.com/auth/script.cpanel
  • https://www.googleapis.com/auth/script.external_request
  • https://www.googleapis.com/auth/script.scriptapp
  • https://www.googleapis.com/auth/script.send_mail
  • https://www.googleapis.com/auth/script.storage
  • https://www.googleapis.com/auth/script.webapp.deploy
  • https://www.googleapis.com/auth/spreadsheets
  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/sqlservice
  • https://www.googleapis.com/auth/userinfo.email

Để biết thêm thông tin, hãy xem bài viết Tổng quan về OAuth 2.0.

Trạng thái

Nếu lệnh gọi run thành công nhưng hàm tập lệnh (hoặc chính Apps Script) gửi ra một ngoại lệ, thì trường error của nội dung phản hồi sẽ chứa đối tượng Status này.

Biểu diễn dưới dạng JSON
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Trường
code

integer

Mã trạng thái. Đối với API này, giá trị sau sẽ:

  • 10, cho biết lỗi SCRIPT_TIMEOUT,
  • 3, cho biết lỗi INVALID_ARGUMENT, hoặc
  • 1 cho biết quá trình thực thi CANCELLED.

message

string

Một thông báo lỗi dành cho nhà phát triển, bằng tiếng Anh. Mọi thông báo lỗi dành cho người dùng đều được bản địa hoá và gửi trong trường details hoặc được ứng dụng bản địa hoá.

details[]

object

Một mảng chứa một đối tượng ExecutionError cung cấp thông tin về bản chất của lỗi.

Một đối tượng có chứa các trường thuộc loại tuỳ ý. Trường bổ sung "@type" chứa URI xác định kiểu. Ví dụ: { "id": 1234, "@type": "types.example.com/standard/id" }.