एचटीएमएल सेवा: पाबंदियां

Apps Script, उपयोगकर्ताओं को नुकसान पहुंचाने वाले एचटीएमएल या JavaScript से बचाने के लिए, iframes का इस्तेमाल करती है. इससे, एचटीएमएल-सेवा वाले वेब ऐप्लिकेशन या Google दस्तावेज़, Sheets, और Forms के लिए कस्टम यूज़र इंटरफ़ेस को सैंडबॉक्स किया जा सकता है. (एचटीएमएल सेवा, ईमेल का मुख्य हिस्सा जनरेट करने जैसी अन्य स्थितियों में सैंडबॉक्स का इस्तेमाल नहीं करती है.) सैंडबॉक्स, क्लाइंट-साइड कोड पर पाबंदियां लगाता है.

सैंडबॉक्स मोड

IFRAME को छोड़कर, अब सभी सैंडबॉक्स मोड बंद हो गए हैं. सैंडबॉक्स के पुराने मोड का इस्तेमाल करने वाले ऐप्लिकेशन अब अपने-आप नए IFRAME मोड का इस्तेमाल करते हैं. अगर आपके पास ऐसी स्क्रिप्ट हैं जिन्हें पुराने मोड (NATIVE और EMULATED) का इस्तेमाल करके बनाया गया था, तो आपको माइग्रेशन के निर्देशों का पालन करना चाहिए. इससे यह पक्का किया जा सकेगा कि वे IFRAME मोड में सही तरीके से काम करें.

अब setSandboxMode तरीके को कॉल करने पर कोई असर नहीं पड़ता.

आईफ़्रेम मोड में पाबंदियां

IFRAME सैंडबॉक्स मोड, HTML5 में iframe सैंडबॉक्सिंग सुविधा पर आधारित है. इसमें इन कीवर्ड का इस्तेमाल किया जाता है:

allow-top-navigation कीवर्ड, कॉन्टेंट को अपने टॉप-लेवल के ब्राउज़िंग कॉन्टेक्स्ट पर ले जाने की अनुमति देता है. हालांकि, इस पर पाबंदी है और इसे सैंडबॉक्स में एट्रिब्यूट के तौर पर सेट नहीं किया गया है. अगर आपको अपनी स्क्रिप्ट को रीडायरेक्ट करना है, तो उपयोगकर्ता के लिए कोई लिंक या बटन जोड़ें, ताकि वह उस पर कार्रवाई कर सके.

IFRAME मोड में, आपको लिंक टारगेट एट्रिब्यूट को _top या _blank पर सेट करना होगा:

Code.js

function doGet() {
  var template = HtmlService.createTemplateFromFile('top');
  return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

top.html

<!DOCTYPE html>
<html>
 <body>
   <div>
     <a href="http://google.com" target="_top">Click Me!</a>
   </div>
 </body>
</html>

इस एट्रिब्यूट की वैल्यू को बदला भी जा सकता है. इसके लिए, वेब पेज के हेड सेक्शन में मौजूद <base> टैग का इस्तेमाल करें:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <div>
     <a href="http://google.com">Click Me!</a>
   </div>
 </body>
</html>

ऐक्टिव कॉन्टेंट के लिए एचटीटीपीएस ज़रूरी है

"ऐक्टिव" कॉन्टेंट, जैसे कि स्क्रिप्ट, बाहरी स्टाइलशीट, और XmlHttpRequests को एचटीटीपीएस पर लोड किया जाना चाहिए, न कि एचटीटीपी पर.