अगर आपको स्क्रिप्ट के लिए यूज़र इंटरफ़ेस बनाना है, तो उसे वेब ऐप्लिकेशन के तौर पर पब्लिश करें. उदाहरण के लिए, उपयोगकर्ताओं को सहायता टीम के सदस्यों के साथ अपॉइंटमेंट शेड्यूल करने की सुविधा देने वाली स्क्रिप्ट को वेब ऐप्लिकेशन के तौर पर सबसे अच्छी तरह से दिखाया जा सकता है. इससे उपयोगकर्ता, सीधे अपने ब्राउज़र से इसे ऐक्सेस कर पाएंगे.
स्टैंडअलोन स्क्रिप्ट और Google Workspace ऐप्लिकेशन से जुड़ी स्क्रिप्ट, दोनों को वेब ऐप्लिकेशन में बदला जा सकता है. हालांकि, इसके लिए ज़रूरी है कि वे ये शर्तें पूरी करती हों.
वेब ऐप्लिकेशन के लिए ज़रूरी शर्तें
किसी स्क्रिप्ट को वेब ऐप्लिकेशन के तौर पर पब्लिश किया जा सकता है. इसके लिए, यह ज़रूरी है कि वह इन शर्तों को पूरा करती हो:
- इसमें
doGetयाdoPostफ़ंक्शन शामिल है. - यह फ़ंक्शन, एचटीएमएल सेवा
HtmlOutputऑब्जेक्ट या कॉन्टेंट सेवाTextOutputऑब्जेक्ट दिखाता है.
अनुरोध के पैरामीटर
जब कोई उपयोगकर्ता किसी ऐप्लिकेशन पर जाता है या कोई प्रोग्राम, ऐप्लिकेशन को एचटीटीपी GET अनुरोध भेजता है, तो Google Apps Script, फ़ंक्शन doGet को चलाता है. जब कोई प्रोग्राम, ऐप्लिकेशन को एचटीटीपी POST अनुरोध भेजता है, तो Apps Script, doPost को चलाता है. दोनों ही मामलों में, e आर्ग्युमेंट, इवेंट पैरामीटर को दिखाता है. इसमें अनुरोध के किसी भी पैरामीटर के बारे में जानकारी हो सकती है. इवेंट ऑब्जेक्ट का स्ट्रक्चर, यहां दी गई टेबल में दिखाया गया है:
| फ़ील्ड | |
|---|---|
e.queryString |
यूआरएल के क्वेरी स्ट्रिंग वाले हिस्से की वैल्यू या name=alice&n=1&n=2 |
e.parameter |
की/वैल्यू पेयर का एक ऑब्जेक्ट, जो अनुरोध के पैरामीटर से मेल खाता है. जिन पैरामीटर की एक से ज़्यादा वैल्यू होती हैं उनके लिए, सिर्फ़ पहली वैल्यू दिखाई जाती है. {"name": "alice", "n": "1"} |
e.parameters |
{"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo |
|
e.contextPath |
इसका इस्तेमाल नहीं किया जाता. यह हमेशा खाली स्ट्रिंग होती है. |
e.contentLength |
POST अनुरोधों के लिए अनुरोध के मुख्य हिस्से की लंबाई या 332 |
e.postData.length |
332 |
e.postData.type |
POST के मुख्य हिस्से का MIME टाइप text/csv |
e.postData.contents |
POST के मुख्य हिस्से का कॉन्टेंट टेक्स्ट Alice,21 |
e.postData.name |
इसकी वैल्यू हमेशा "postData" होती है postData |
username और age जैसे पैरामीटर को इस तरह के यूआरएल में पास करें:
https://script.google.com/.../exec?username=jsmith&age=21
पैरामीटर इस तरह दिखाएं:
function doGet(e) {
var params = JSON.stringify(e);
return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}
ऊपर दिए गए उदाहरण में, doGet यह आउटपुट दिखाता है:
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
सिस्टम ने पैरामीटर के इन नामों को रिज़र्व किया है. इनका इस्तेमाल यूआरएल पैरामीटर या POST बॉडी में नहीं किया जाना चाहिए:
csid
इन पैरामीटर का इस्तेमाल करने पर, एचटीटीपी 405 रिस्पॉन्स मिल सकता है. साथ ही, गड़बड़ी का यह मैसेज दिख सकता है: "माफ़ करें, आपकी अनुरोध की गई फ़ाइल मौजूद नहीं है." अगर हो सके, तो अपनी स्क्रिप्ट को अपडेट करके, पैरामीटर के अलग-अलग नामों का इस्तेमाल करें.
किसी स्क्रिप्ट को वेब ऐप्लिकेशन के तौर पर डिप्लॉय करना
किसी स्क्रिप्ट को वेब ऐप्लिकेशन के तौर पर डिप्लॉय करने के लिए, यह तरीका अपनाएं:
- स्क्रिप्ट प्रोजेक्ट में सबसे ऊपर दाईं ओर, डिप्लॉय करें > नया डिप्लॉयमेंट पर क्लिक करें.
- "टाइप चुनें" के बगल में, डिप्लॉयमेंट टाइप चालू करें > वेब ऐप्लिकेशन पर क्लिक करें.
- "डिप्लॉयमेंट कॉन्फ़िगरेशन" में दिए गए फ़ील्ड में, अपने वेब ऐप्लिकेशन के बारे में जानकारी डालें.
- डिप्लॉय करें पर क्लिक करें.
वेब ऐप्लिकेशन का यूआरएल उन लोगों के साथ शेयर करें जिन्हें आपको ऐप्लिकेशन इस्तेमाल करने की अनुमति देनी है. हालांकि, इसके लिए ज़रूरी है कि आपने उन्हें ऐक्सेस दिया हो.
अगर किसी डोमेन में डिप्लॉय किए गए वेब ऐप्लिकेशन का मालिकाना हक, किसी दूसरे डोमेन के शेयर किए गए ड्राइव या खाते को ट्रांसफ़र कर दिया जाता है, तो वे काम करना बंद कर देते हैं. इसे ठीक करने के लिए, नए मालिक या सहयोगी को वेब ऐप्लिकेशन को नए डोमेन में फिर से डिप्लॉय करना होगा. इसके अलावा, अगर वेब ऐप्लिकेशन को उसके मूल डोमेन पर वापस ले जाया जाता है, तो वेब ऐप्लिकेशन उस डोमेन के लिए फिर से काम करना शुरू कर देता है. इसके लिए, उसे फिर से डिप्लॉय करने की ज़रूरत नहीं होती.
वेब ऐप्लिकेशन डिप्लॉयमेंट की जांच करना
अपनी स्क्रिप्ट को वेब ऐप्लिकेशन के तौर पर आज़माने के लिए, यह तरीका अपनाएं:
- स्क्रिप्ट प्रोजेक्ट में सबसे ऊपर दाईं ओर, तैनात करें > टेस्ट डिप्लॉयमेंट पर क्लिक करें.
- "टाइप चुनें" के बगल में मौजूद, डिप्लॉयमेंट के टाइप चालू करें > वेब ऐप्लिकेशन पर क्लिक करें.
- वेब ऐप्लिकेशन के यूआरएल में जाकर, कॉपी करें पर क्लिक करें.
यूआरएल को अपने ब्राउज़र में चिपकाएं और वेब ऐप्लिकेशन की जांच करें.
यह यूआरएल
/devपर खत्म होता है. इसे सिर्फ़ वे उपयोगकर्ता ऐक्सेस कर सकते हैं जिनके पास स्क्रिप्ट में बदलाव करने का ऐक्सेस है. ऐप्लिकेशन का यह इंस्टेंस, हमेशा सबसे हाल में सेव किए गए कोड को चलाता है. इसका इस्तेमाल सिर्फ़ डेवलपमेंट के दौरान टेस्टिंग के लिए किया जाता है.
वेब ऐप्लिकेशन पर ग्रैनुलर OAuth सुविधा को आज़माने के लिए, पक्का करें कि आपके प्रोजेक्ट में पहले से कुछ अनुमतियां न हों.
किसी भी मौजूदा अनुमति को अमान्य करने के लिए, ScriptApp.invalidateAuth का इस्तेमाल करें.
ऐसे सभी वेब ऐप्लिकेशन के लिए, जो पहले से ही डिप्लॉय किए जा चुके हैं और मौजूदा उपयोगकर्ता की पहचान के तहत काम कर रहे हैं, मेनिफ़ेस्ट में मौजूद executeAs JSON फ़ील्ड को USER_DEPLOYING में बदलें.
डेवलपर के तौर पर वेब ऐप्लिकेशन डिप्लॉय करते समय, ScriptApp.getOAuthToken से मिले OAuth टोकन को हैंडल करते समय बहुत सावधानी बरतें. इन टोकन से, दूसरे ऐप्लिकेशन को आपके डेटा का ऐक्सेस मिल सकता है. इन्हें कभी भी क्लाइंट को न भेजें.
अनुमतियां
वेब ऐप्लिकेशन के लिए अनुमतियां अलग-अलग होती हैं. यह इस बात पर निर्भर करता है कि आपने ऐप्लिकेशन को कैसे लागू किया है:
- ऐप्लिकेशन को मेरे तौर पर चलाएं—इस विकल्प को चुनने पर, स्क्रिप्ट हमेशा आपके तौर पर चलती है. भले ही, वेब ऐप्लिकेशन को कोई भी ऐक्सेस करे.
- वेब ऐप्लिकेशन ऐक्सेस करने वाले उपयोगकर्ता के तौर पर ऐप्लिकेशन को एक्ज़ीक्यूट करें—इस मामले में, स्क्रिप्ट उस उपयोगकर्ता की पहचान के तहत चलती है जो वेब ऐप्लिकेशन का इस्तेमाल कर रहा है. अनुमति देने के इस तरीके से, वेब ऐप्लिकेशन को स्क्रिप्ट के मालिक का ईमेल पता दिखाने की अनुमति मिलती है. ऐसा तब होता है, जब उपयोगकर्ता ऐक्सेस करने की अनुमति देता है.
Apps Script, वेब ऐप्लिकेशन को अनुमति देने वाले नए उपयोगकर्ताओं की संख्या पर पाबंदियां लगाता है. ऐसा इसलिए, ताकि कोई व्यक्ति इसका गलत इस्तेमाल न कर सके. ये सीमाएं, अन्य बातों के साथ-साथ इस बात पर भी निर्भर करती हैं कि पब्लिश करने वाला खाता, Google Workspace डोमेन का हिस्सा है या नहीं.
शेयर की गई ड्राइव का इस्तेमाल करके, वेब ऐप्लिकेशन पर मिलकर काम करें. जब किसी शेयर की गई ड्राइव में मौजूद वेब ऐप्लिकेशन को डिप्लॉय किया जाता है, तब "execute as you" विकल्प चुनने पर, वेब ऐप्लिकेशन उस उपयोगकर्ता के अधिकार के तहत काम करता है जिसने उसे डिप्लॉय किया है. ऐसा इसलिए होता है, क्योंकि स्क्रिप्ट का कोई मालिक नहीं होता.
Google Sites में वेब ऐप्लिकेशन एम्बेड करना {:#embed-web-app}
एम्बेड किए गए वेब ऐप्लिकेशन के लिए, ऐक्सेस करने की अनुमतियां अब भी लागू होती हैं. इससे, उनका गलत इस्तेमाल नहीं किया जा सकेगा. अगर एम्बेड किया गया वेब ऐप्लिकेशन काम नहीं कर रहा है, तो देखें कि वेब ऐप्लिकेशन के मालिक और डोमेन एडमिन ने जो अनुमतियां सेट की हैं वे इसके इस्तेमाल की अनुमति देती हैं या नहीं.
Sites में किसी वेब ऐप्लिकेशन को एम्बेड करने के लिए, पहले उसे डप्लॉय करना होगा. आपको डिप्लॉय करें डायलॉग से डिप्लॉय किया गया यूआरएल भी चाहिए होगा.
किसी वेब ऐप्लिकेशन को Sites पेज में एम्बेड करने के लिए, यह तरीका अपनाएं:
- वह Sites पेज खोलें जहां आपको वेब ऐप्लिकेशन जोड़ना है.
- शामिल करें > यूआरएल एम्बेड करें को चुनें.
- वेब ऐप्लिकेशन का यूआरएल चिपकाएं. इसके बाद, जोड़ें पर क्लिक करें.
वेब ऐप्लिकेशन, पेज की झलक में फ़्रेम में दिखता है. पेज पब्लिश करने पर, आपकी साइट पर आने वाले लोगों को वेब ऐप्लिकेशन को अनुमति देनी पड़ सकती है. ऐसा तब करना होगा, जब वेब ऐप्लिकेशन सामान्य तरीके से काम न कर रहा हो. बिना अनुमति वाले वेब ऐप्लिकेशन, उपयोगकर्ता को अनुमति देने के लिए प्रॉम्प्ट दिखाते हैं.
वेब ऐप्लिकेशन और ब्राउज़र का इतिहास
मल्टी-पेज ऐप्लिकेशन या यूआरएल पैरामीटर का इस्तेमाल करके कंट्रोल किए जाने वाले डाइनैमिक यूज़र इंटरफ़ेस (यूआई) वाले ऐप्लिकेशन को सिम्युलेट करने के लिए, ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) या पेज को दिखाने वाला स्टेट ऑब्जेक्ट तय करें. इसके बाद, उपयोगकर्ता के ऐप्लिकेशन पर नेविगेट करने पर, स्टेट को ब्राउज़र के इतिहास में पुश करें. इतिहास के इवेंट सुनें, ताकि जब उपयोगकर्ता ब्राउज़र के बटन का इस्तेमाल करके आगे-पीछे नेविगेट करे, तो आपका वेब ऐप्लिकेशन सही यूज़र इंटरफ़ेस (यूआई) दिखाए. लोड होने के समय यूआरएल पैरामीटर के लिए क्वेरी करके, अपने ऐप्लिकेशन को उन पैरामीटर के आधार पर डाइनैमिक तरीके से यूज़र इंटरफ़ेस (यूआई) बनाने दें. इससे उपयोगकर्ता, ऐप्लिकेशन को किसी खास स्थिति में शुरू कर पाएगा.
Apps Script, ब्राउज़र के इतिहास से लिंक किए गए वेब ऐप्लिकेशन बनाने में मदद करने के लिए, क्लाइंट-साइड के दो एसिंक्रोनस JavaScript API उपलब्ध कराता है:
google.script.historyऐसे तरीके उपलब्ध कराता है जिनकी मदद से, ब्राउज़र के इतिहास में हुए बदलावों के हिसाब से डाइनैमिक रिस्पॉन्स दिया जा सकता है. इसमें ये शामिल हैं: ब्राउज़र के इतिहास में स्थितियां (आपके तय किए गए सामान्य ऑब्जेक्ट) जोड़ना, इतिहास स्टैक में सबसे ऊपर वाली स्थिति को बदलना, और इतिहास में होने वाले बदलावों का जवाब देने के लिए, लिसनर कॉलबैक फ़ंक्शन सेट करना.google.script.urlकी मदद से, मौजूदा पेज के यूआरएल पैरामीटर और यूआरएल फ़्रैगमेंट को वापस पाया जा सकता है. हालांकि, ऐसा सिर्फ़ तब किया जा सकता है, जब वे मौजूद हों.
ये हिस्ट्री एपीआई, सिर्फ़ वेब ऐप्लिकेशन के लिए उपलब्ध हैं. ये साइडबार, डायलॉग या ऐड-ऑन के लिए काम नहीं करते. इस सुविधा का इस्तेमाल, Sites में एम्बेड किए गए वेब ऐप्लिकेशन में भी नहीं किया जाना चाहिए.