Method: scripts.run

เรียกใช้ฟังก์ชันในโปรเจ็กต์ Apps Script ต้องทำให้โครงการสคริปต์ใช้งานได้กับ Apps Script API และแอปพลิเคชันการเรียกใช้ต้องแชร์โครงการ Cloud Platform เดียวกัน

วิธีนี้ต้องมีการให้สิทธิ์ด้วยโทเค็น OAuth 2.0 ที่มีขอบเขตอย่างน้อย 1 ขอบเขตที่ระบุในส่วนการให้สิทธิ์ โปรเจ็กต์สคริปต์ที่ไม่จำเป็นต้องมีการให้สิทธิ์จะไม่สามารถดำเนินการผ่าน API นี้ได้ หากต้องการค้นหาขอบเขตที่ถูกต้องเพื่อรวมไว้ในโทเค็นการตรวจสอบสิทธิ์ ให้เปิดหน้าภาพรวมของโปรเจ็กต์สคริปต์ แล้วเลื่อนลงไปที่ "ขอบเขต OAuth ของโปรเจ็กต์"

ข้อผิดพลาด 403, PERMISSION_DENIED: The caller does not have permission บ่งบอกว่าโปรเจ็กต์ Cloud Platform ที่ใช้เพื่อให้สิทธิ์คำขอไม่เหมือนกับโปรเจ็กต์ที่สคริปต์ใช้

คำขอ HTTP

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

URL ใช้ไวยากรณ์การแปลง gRPC

พารามิเตอร์เส้นทาง

พารามิเตอร์
scriptId

string

รหัสสคริปต์ของสคริปต์ที่จะดำเนินการ ค้นหารหัสสคริปต์ในหน้าการตั้งค่าโปรเจ็กต์ในส่วน "รหัส"

เนื้อหาของคำขอ

เนื้อหาของคำขอมีข้อมูลที่มีโครงสร้างต่อไปนี้

การแสดง JSON
{
  "function": string,
  "parameters": [
    value
  ],
  "sessionState": string,
  "devMode": boolean
}
ช่อง
function

string

ชื่อของฟังก์ชันที่จะดำเนินการในสคริปต์ที่ระบุ ชื่อต้องไม่มีวงเล็บหรือพารามิเตอร์ ซึ่งอ้างอิงฟังก์ชันในไลบรารีที่รวมไว้ เช่น Library.libFunction1 ได้

parameters[]

value (Value format)

พารามิเตอร์ที่จะส่งไปยังฟังก์ชันที่จะดำเนินการ ประเภทออบเจ็กต์ของพารามิเตอร์แต่ละรายการควรตรงกับประเภทที่ต้องการใน Apps Script พารามิเตอร์ต้องไม่เป็นประเภทออบเจ็กต์เฉพาะของ Apps Script (เช่น Document หรือ Calendar) ต้องเป็นประเภทพื้นฐานเท่านั้น เช่น string, number, array, object หรือ boolean ไม่บังคับ

sessionState

string

เลิกใช้งาน สำหรับใช้กับส่วนเสริมของ Android เท่านั้น รหัสที่แสดงเซสชันปัจจุบันของผู้ใช้ในแอป Android สำหรับ Google เอกสารหรือชีต โดยรวมเป็นข้อมูลเพิ่มเติมใน Intent ที่เปิดตัวส่วนเสริม เมื่อส่วนเสริม Android ทำงานโดยมีสถานะเซสชัน ส่วนเสริมจะได้รับสิทธิ์ของสคริปต์ขอบเขต กล่าวคือ ส่วนเสริมจะเข้าถึงข้อมูล เช่น ตำแหน่งเคอร์เซอร์ปัจจุบันของผู้ใช้ (ในเอกสาร) หรือเซลล์ที่เลือก (ในชีต) ได้ หากต้องการดึงข้อมูลรัฐ โปรดโทรติดต่อ Intent.getStringExtra("com.google.android.apps.docs.addons.SessionState") ไม่บังคับ

devMode

boolean

หาก true และผู้ใช้เป็นเจ้าของสคริปต์ สคริปต์จะทำงานในเวอร์ชันที่บันทึกไว้ล่าสุดแทนที่จะเป็นเวอร์ชันที่มีการทำให้ใช้งานได้สำหรับ Apps Script API ไม่บังคับ ค่าเริ่มต้นคือ false

เนื้อหาการตอบกลับ

หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

การแสดงการเรียกใช้ฟังก์ชัน Apps Script ที่เริ่มต้นด้วย run การตอบสนองของการเรียกใช้จะไม่มาถึงจนกว่าฟังก์ชันจะทำงานเสร็จสิ้น ดูรันไทม์ของการดำเนินการสูงสุดได้ในคู่มือโควต้า Apps Script

หลังจากการดำเนินการเริ่มต้นขึ้น อาจมีผลลัพธ์ 1 ใน 4 รายการดังนี้

  • หากฟังก์ชันสคริปต์แสดงผลสำเร็จ ช่อง response จะมีออบเจ็กต์ ExecutionResponse พร้อมค่าที่แสดงผลของฟังก์ชันในช่อง result ของออบเจ็กต์
  • หากฟังก์ชันของสคริปต์ (หรือ Apps Script เอง) มีข้อยกเว้น ช่อง error จะมีออบเจ็กต์ Status ช่อง details ของออบเจ็กต์ Status มีอาร์เรย์ที่มีออบเจ็กต์ ExecutionError รายการเดียวที่ให้ข้อมูลเกี่ยวกับลักษณะของข้อผิดพลาด
  • หากการดำเนินการยังไม่เสร็จสมบูรณ์ ช่อง done จะเป็น false และจะไม่มีทั้งช่อง response และ error
  • หากการเรียกใช้ run เองล้มเหลว (เช่น เนื่องจากคำขอผิดรูปแบบหรือข้อผิดพลาดในการให้สิทธิ์) เมธอดจะแสดงรหัสการตอบกลับ HTTP ในช่วง 4XX ด้วยรูปแบบอื่นสำหรับเนื้อความการตอบกลับ ไลบรารีของไคลเอ็นต์จะแปลงการตอบกลับ 4XX เป็นคลาสข้อยกเว้นโดยอัตโนมัติ

การแสดง 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.
}
ช่อง
done

boolean

ฟิลด์นี้จะระบุว่าการเรียกใช้สคริปต์เสร็จสมบูรณ์แล้วหรือไม่ การดำเนินการที่เสร็จสมบูรณ์จะมีฟิลด์ response ที่ป้อนซึ่งมีฟังก์ชัน ExecutionResponse จากที่ดำเนินการไปแล้ว

ช่องการรวม result ผลการดำเนินการ ซึ่งอาจเป็น error หรือ response ที่ถูกต้องก็ได้ หาก done == false จะไม่มีการตั้งค่าทั้ง error และ response หาก done == true อาจตั้งค่า error หรือ response ได้ 1 รายการ บริการบางอย่างอาจแสดงผลลัพธ์ไม่ได้ result ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้
error

object (Status)

หากการเรียกใช้ run สำเร็จ แต่ฟังก์ชันของสคริปต์ (หรือ Apps Script เอง) มีการส่งข้อยกเว้น ช่องนี้จะมีออบเจ็กต์ Status ช่อง details ของออบเจ็กต์ Status มีอาร์เรย์ที่มีออบเจ็กต์ ExecutionError รายการเดียวที่ให้ข้อมูลเกี่ยวกับลักษณะของข้อผิดพลาด

response

object

หากฟังก์ชันสคริปต์แสดงผลสำเร็จ ช่องนี้จะมีออบเจ็กต์ ExecutionResponse ที่มีค่าส่งคืนของฟังก์ชัน

ออบเจ็กต์ที่มีช่องประเภทที่กำหนดเอง ช่องเพิ่มเติม "@type" จะมี URI ที่ระบุประเภท ตัวอย่างเช่น { "id": 1234, "@type": "types.example.com/standard/id" }

ขอบเขตการให้สิทธิ์

ต้องใช้ขอบเขต OAuth รายการใดรายการหนึ่งต่อไปนี้

  • 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

สำหรับข้อมูลเพิ่มเติม โปรดดูที่ภาพรวมของ OAuth 2.0

สถานะ

หากการเรียกใช้ run สำเร็จ แต่ฟังก์ชันของสคริปต์ (หรือ Apps Script เอง) มีการส่งข้อยกเว้น ช่อง error ของเนื้อหาการตอบกลับจะมีออบเจ็กต์ Status นี้

การแสดง JSON
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
ช่อง
code

integer

รหัสสถานะ สำหรับ API นี้ ค่านี้ทำอย่างใดอย่างหนึ่งต่อไปนี้

  • 10 ซึ่งแสดงถึงข้อผิดพลาด SCRIPT_TIMEOUT
  • 3 หมายถึงข้อผิดพลาด INVALID_ARGUMENT หรือ
  • 1 หมายถึงมีการดำเนินการ CANCELLED

message

string

ข้อความแสดงข้อผิดพลาดที่นักพัฒนาแอปแสดงเป็นภาษาอังกฤษ ข้อความแสดงข้อผิดพลาดที่แสดงต่อผู้ใช้จะได้รับการแปลและส่งในช่อง details หรือแปลโดยไคลเอ็นต์

details[]

object

อาร์เรย์ที่มีออบเจ็กต์ ExecutionError รายการเดียวที่ให้ข้อมูลเกี่ยวกับลักษณะของข้อผิดพลาด

ออบเจ็กต์ที่มีช่องประเภทที่กำหนดเอง ช่องเพิ่มเติม "@type" จะมี URI ที่ระบุประเภท ตัวอย่างเช่น { "id": 1234, "@type": "types.example.com/standard/id" }