Method: scripts.run

Apps Script प्रोजेक्ट में फ़ंक्शन चलाता है. स्क्रिप्ट प्रोजेक्ट को Apps Script API के साथ इस्तेमाल करने के लिए डिप्लॉय करना ज़रूरी है. साथ ही, कॉल करने वाले ऐप्लिकेशन के लिए, एक ही Cloud Platform प्रोजेक्ट शेयर करना ज़रूरी है.

इस तरीके के लिए, OAuth 2.0 टोकन के साथ अनुमति की ज़रूरत होती है. इस टोकन में ऑथराइज़ेशन सेक्शन में दिया गया कम से कम एक स्कोप शामिल होता है. जिन स्क्रिप्ट प्रोजेक्ट के लिए अनुमति की ज़रूरत नहीं होती उन्हें इस एपीआई से एक्ज़ीक्यूट नहीं किया जा सकता. पुष्टि करने वाले टोकन में शामिल करने के लिए सही स्कोप ढूंढने के लिए, स्क्रिप्ट प्रोजेक्ट का खास जानकारी पेज खोलें और नीचे की ओर स्क्रोल करके "प्रोजेक्ट OAuth स्कोप" पर जाएं.

गड़बड़ी 403, PERMISSION_DENIED: The caller does not have permission से पता चलता है कि अनुरोध की पुष्टि करने के लिए इस्तेमाल किया गया Cloud Platform प्रोजेक्ट, स्क्रिप्ट में इस्तेमाल किए गए प्रोजेक्ट से अलग है.

एचटीटीपी अनुरोध

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

यूआरएल, gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.

पाथ के पैरामीटर

पैरामीटर
scriptId

string

चलाई जाने वाली स्क्रिप्ट का स्क्रिप्ट आईडी. "आईडी" में जाकर, प्रोजेक्ट सेटिंग पेज पर स्क्रिप्ट आईडी ढूंढें.

अनुरोध का मुख्य भाग

अनुरोध के मुख्य हिस्से में इस तरह का डेटा शामिल होता है:

जेएसओएन के काेड में दिखाना
{
  "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 ऐड-ऑन के साथ इस्तेमाल करने के लिए. वह आईडी जो Google Docs या Sheets के लिए, Android ऐप्लिकेशन में उपयोगकर्ता के मौजूदा सेशन को दिखाता है. इसे ऐड-ऑन लॉन्च करने वाले इंटेंट में, अतिरिक्त डेटा के तौर पर शामिल किया जाता है. जब किसी Android ऐड-ऑन को सेशन की स्थिति के साथ चलाया जाता है, तो उसे बाउंड स्क्रिप्ट के खास अधिकार मिल जाते हैं. इसका मतलब है कि वह उपयोगकर्ता के कर्सर की मौजूदा जगह (Docs में) या चुने गए सेल (Sheets में) जैसी जानकारी ऐक्सेस कर सकता है. स्टेटस वापस पाने के लिए, Intent.getStringExtra("com.google.android.apps.docs.addons.SessionState") पर कॉल करें. ज़रूरी नहीं.

devMode

boolean

अगर true और उपयोगकर्ता के पास स्क्रिप्ट का मालिकाना हक है, तो स्क्रिप्ट, Apps Script API के साथ इस्तेमाल के लिए डिप्लॉय किए गए वर्शन के बजाय, हाल ही में सेव किए गए वर्शन पर चलती है. ज़रूरी नहीं; डिफ़ॉल्ट वैल्यू false है.

जवाब का मुख्य भाग

अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.

Apps Script फ़ंक्शन को लागू करने की प्रोसेस, run से शुरू हुई. जब तक फ़ंक्शन एक्ज़ीक्यूशन पूरा नहीं कर लेता, तब तक एक्ज़ीक्यूशन का रिस्पॉन्स नहीं मिलता. ज़्यादा से ज़्यादा रनिंग रनटाइम की जानकारी Apps Script कोटा गाइड में दी गई है.

निष्पादन शुरू होने के बाद, चार में से कोई एक नतीजा मिल सकता है:

  • अगर स्क्रिप्ट फ़ंक्शन सही तरीके से काम करता है, तो response फ़ील्ड में ExecutionResponse ऑब्जेक्ट होता है, जिसमें ऑब्जेक्ट के result फ़ील्ड में फ़ंक्शन की रिटर्न वैल्यू होती है.
  • अगर स्क्रिप्ट फ़ंक्शन (या खुद Apps Script) कोई अपवाद दिखाता है, तो error फ़ील्ड में Status ऑब्जेक्ट होता है. Status ऑब्जेक्ट के details फ़ील्ड में एक ExecutionError ऑब्जेक्ट वाला कलेक्शन होता है, जो गड़बड़ी के टाइप के बारे में जानकारी देता है.
  • अगर प्रोसेस अब तक पूरी नहीं हुई है, तो done फ़ील्ड false होगा. साथ ही, response या error फ़ील्ड में से कोई भी फ़ील्ड मौजूद नहीं है.
  • अगर run कॉल अपने-आप नहीं चलता (उदाहरण के लिए, गलत तरीके से किए गए अनुरोध या अनुमति देने में हुई गड़बड़ी की वजह से), तो यह तरीका 4XX रेंज में रिस्पॉन्स के मुख्य हिस्से के लिए किसी दूसरे फ़ॉर्मैट वाला एचटीटीपी रिस्पॉन्स कोड दिखाता है. क्लाइंट लाइब्रेरी, 4XX रिस्पॉन्स को अपने-आप अपवाद क्लास में बदल देती हैं.

जेएसओएन के काेड में दिखाना
{
  "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 में से कोई एक सेट किया जा सकता है. ऐसा हो सकता है कि कुछ सेवाओं से नतीजे न मिलें. result इनमें से सिर्फ़ एक हो सकता है:
error

object (Status)

अगर run कॉल हो जाता है, लेकिन स्क्रिप्ट फ़ंक्शन (या खुद Apps Script) कोई अपवाद दिखाता है, तो इस फ़ील्ड में Status ऑब्जेक्ट होता है. Status ऑब्जेक्ट के details फ़ील्ड में एक ExecutionError ऑब्जेक्ट वाला कलेक्शन होता है, जो गड़बड़ी के टाइप के बारे में जानकारी देता है.

response

object

अगर स्क्रिप्ट फ़ंक्शन सही से दिखता है, तो इस फ़ील्ड में फ़ंक्शन की रिटर्न वैल्यू के साथ ExecutionResponse ऑब्जेक्ट शामिल होता है.

एक ऑब्जेक्ट, जिसमें आर्बिट्रेरी टाइप के फ़ील्ड शामिल हैं. एक और फ़ील्ड "@type" में, टाइप की पहचान करने वाला एक यूआरआई शामिल है. उदाहरण: { "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 ऑब्जेक्ट मौजूद होगा.

जेएसओएन के काेड में दिखाना
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
फ़ील्ड
code

integer

स्टेटस कोड. इस एपीआई के लिए, यह वैल्यू या तो:

  • 10, SCRIPT_TIMEOUT गड़बड़ी दिखाता है,
  • 3, इससे पता चलता है कि गड़बड़ी INVALID_ARGUMENT वाली है या
  • 1, इससे पता चलता है कि CANCELLED को लागू किया जा रहा है.

message

string

डेवलपर को गड़बड़ी का मैसेज, जो अंग्रेज़ी में है. उपयोगकर्ता को दिखने वाली गड़बड़ी के मैसेज को स्थानीय भाषा में बदला जाता है और details फ़ील्ड में भेजा जाता है. इसके अलावा, क्लाइंट इस मैसेज को स्थानीय भाषा में भी लिख सकता है.

details[]

object

एक कलेक्शन, जिसमें एक ExecutionError ऑब्जेक्ट शामिल होता है. इससे यह पता चलता है कि गड़बड़ी किस तरह की है.

एक ऑब्जेक्ट, जिसमें आर्बिट्रेरी टाइप के फ़ील्ड शामिल हैं. एक और फ़ील्ड "@type" में, टाइप की पहचान करने वाला एक यूआरआई शामिल है. उदाहरण: { "id": 1234, "@type": "types.example.com/standard/id" }.