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/{deploymentId}:run

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

पाथ पैरामीटर

पैरामीटर
deploymentId

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

devMode

boolean

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

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

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

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

लागू होने के बाद, इसके चार में से कोई एक नतीजा मिल सकता है:

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

JSON के काेड में दिखाना
{
  "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" }.