Method: scripts.run

किसी 'Apps स्क्रिप्ट' प्रोजेक्ट में फ़ंक्शन चलाता है. स्क्रिप्ट प्रोजेक्ट को 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

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

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

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

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

devMode

boolean

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

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

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

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

एक्ज़ीक्यूशन शुरू होने के बाद, इसके चार में से एक नतीजे हो सकते हैं:

  • अगर स्क्रिप्ट फ़ंक्शन सही तरीके से रिटर्न करता है, तो 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" }.